华为云用户手册

  • 示例 重命名现有的索引ds_ship_mode_t1_index1为tpcds.ds_ship_mode_t1_index5,新的索引名字前ds_ship_mode_t1_index5带有原索引所在的schema名tpcds: 1 ALTER INDEX tpcds.ds_ship_mode_t1_index1 RENAME TO tpcds.ds_ship_mode_t1_index5; 设置索引ds_ship_mode_t1_index2不可用: 1 ALTER INDEX tpcds.ds_ship_mode_t1_index2 UNUSABLE; 重建索引ds_ship_mode_t1_index2: 1 ALTER INDEX tpcds.ds_ship_mode_t1_index2 REBUILD; 重命名分区表索引: 1 ALTER INDEX tpcds.ds_customer_address_p1_index2 RENAME PARTITION CA_ADDRESS_SK_index1 TO CA_ADDRESS_SK_index4; 修改索引的注释: 1 ALTER INDEX tpcds.ds_customer_address_p1_index2 COMMENT 'comment_ds_customer_address_p1_index2';
  • 语法格式 重命名表索引的名字,支持新的索引名字前带有原索引所在的schema名,但是不支持同时修改schema名。 1 2 3 4 ALTER INDEX [ IF EXISTS ] index_name RENAME TO new_name; ALTER INDEX [ IF EXISTS ] index_name RENAME TO schema.new_name; 修改表索引的存储参数。 1 2 ALTER INDEX [ IF EXISTS ] index_name SET ( {storage_parameter = value} [, ... ] ); 修改索引的状态标记。 1 2 ALTER INDEX [ IF EXISTS ] index_name SET ( {invisible = value} [, ... ] ); 重置表索引的存储参数。 1 2 ALTER INDEX [ IF EXISTS ] index_name RESET ( storage_parameter [, ... ] ) ; 设置表索引或索引分区不可用。 1 2 ALTER INDEX [ IF EXISTS ] index_name [ MODIFY PARTITION index_partition_name ] UNUSABLE; 列存表不支持该语法。 重建表索引或索引分区。 1 2 ALTER INDEX index_name REBUILD [ PARTITION index_partition_name ][WITHOUT UNUSABLE]; 重命名索引分区。 1 2 ALTER INDEX [ IF EXISTS ] index_name RENAME PARTITION index_partition_name TO new_index_partition_name; PG_OBJECT系统表记录索引最后修改时间时不支持对该语法的记录。
  • INTERVAL MySQL中使用interval表达式格式为INTERVAL N时间单位,DWS不支持,需要转换为INTERVAL 'N'时间单位。 输入示例 1 2 3 4 5 6 SELECT CURRENT_TIME() - INTERVAL 4 DAY; SELECT NOW() - INTERVAL 5 HOUR; SELECT CURRENT_TIME() - INTERVAL '4' DAY; SELECT NOW() - INTERVAL '5' HOUR; SELECT CURRENT_TIME() - INTERVAL "4" DAY; SELECT NOW() - INTERVAL "5" HOUR; 输出示例 1 2 3 4 5 6 SELECT (CURRENT_TIME () - INTERVAL '4' DAY); SELECT (NOW () - INTERVAL '5' HOUR); SELECT (CURRENT_TIME () - INTERVAL '4' DAY); SELECT (NOW () - INTERVAL '5' HOUR); SELECT (CURRENT_TIME () - INTERVAL '4' DAY); SELECT (NOW () - INTERVAL '5' HOUR); 父主题: SELECT
  • 函数类型解析 从系统表pg_proc中选择所有可能被选到的函数。如果使用了一个不带模式修饰的函数名字,那么认为该函数是那些在当前搜索路径中的函数。如果给出一个带修饰的函数名,那么只考虑指定模式中的函数。 如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。 查找和输入参数类型完全匹配的函数。如果找到一个,则用之。如果输入的实参类型都是unknown类型,则不会找到匹配的函数。 如果未找到完全匹配,请查看该函数是否为一个特殊的类型转换函数。 寻找最优匹配。 抛弃那些输入类型不匹配并且也不能隐式转换成匹配的候选函数。unknown文本在这种情况下可以转换成任何东西。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选函数,保留那些输入类型匹配最准确的。此时,域被看作和它们的基本类型相同。如果没有一个函数能准确匹配,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选函数,保留那些需要类型转换时接受首选类型位置最多的函数。如果没有接受首选类型的函数,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 如果有任何输入参数是unknown类型,检查剩余的候选函数对应参数位置的类型范畴。在每一个能够接受字符串类型范畴的位置使用string类型(这种对字符串的偏爱是合适的,因为unknown文本确实像字符串)。另外,如果所有剩下的候选函数都接受相同的类型范畴,则选择该类型范畴,否则抛出一个错误(因为在没有更多线索的条件下无法作出正确的选择)。现在抛弃不接受选定的类型范畴的候选函数,然后,如果任意候选函数在那个范畴接受一个首选类型,则抛弃那些在该参数位置接受非首选类型的候选函数。如果没有一个候选符合这些测试则保留所有候选。如果只有一个候选函数符合,则使用它;否则,继续下一步。 如果同时有unknown和已知类型的参数,并且所有已知类型的参数有相同的类型,假设unknown参数也是这种类型,检查哪个候选函数可以在unknown参数位置接受这种类型。如果正好一个候选符合,那么使用它。否则,产生一个错误。
  • 示例 示例1:圆整函数参数类型解析。只有一个round函数有两个参数(第一个是numeric,第二个是integer)。所以下面的查询自动把第一个类型为integer的参数转换成numeric类型。 1 2 3 4 5 SELECT round(4, 4); round -------- 4.0000 (1 row) 实际上它被分析器转换成: 1 SELECT round(CAST (4 AS numeric), 4); 因为带小数点的数值常量初始时被赋予numeric类型,因此下面的查询将不需要类型转换,并且可能会略微高效一些: 1 SELECT round(4.0, 4); 示例2:子字符串函数类型解析。有好几个substr函数,其中一个接受text和integer类型。如果用一个未声明类型的字符串常量调用它,系统将选择接受string类型范畴的首选类型(也就是text类型)的候选函数。 1 2 3 4 5 SELECT substr('1234', 3); substr -------- 34 (1 row) 如果该字符串声明为varchar类型,就像从表中取出来的数据一样,分析器将试着将其转换成text类型: 1 2 3 4 5 SELECT substr(varchar '1234', 3); substr -------- 34 (1 row) 被分析器转换后实际上变成: 1 SELECT substr(CAST (varchar '1234' AS text), 3); 分析器从pg_cast表中了解到text和varchar是二进制兼容的,意思是说一个可以传递给接受另一个的函数而不需要做任何物理转换。因此,在这种情况下,实际上没有做任何类型转换。 而且,如果以integer为参数调用函数,分析器将试图将其转换成text类型: 1 2 3 4 5 SELECT substr(1234, 3); substr -------- 34 (1 row) 被分析器转换后实际上变成: 1 2 3 4 5 SELECT substr(CAST (1234 AS text), 3); substr -------- 34 (1 row)
  • 创建包模式 包声明迁移为创建以包名命名的模式。设置pkgSchemaNaming=false后,可以进行迁移。 输入:为包创建模式名 1 2 3 4 5 6 7 8 9 CREATE OR REPLACE EDITIONABLE PACKAGE "PACK_DEMO"."PACKAGE_GET_NOVA_INFO" AS TYPE novalistcur is REF CURSOR; PROCEDURE getNovaInfo ( i_appEnShortName IN VARCHAR2, o_flag OUT VARCHAR2, o_errormsg OUT VARCHAR2, o_novalist OUT novalistcur ); 输出 1 2 3 4 /*~~PACKAGE_GET_NOVA_INFO~~*/ CREATE SCHEMA PACKAGE_GET_NOVA_INFO ; 父主题: PL/SQL包
  • string_to_array(text, text [, text]) 描述:使用第二个text指定分隔符,使用第三个可选的text作为NULL值替换模板,如果分隔后的子串与第三个可选的text完全匹配,则将其替换为NULL。 返回类型:text[] 示例: 1 2 3 4 5 6 7 8 9 10 SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'yy') AS RESULT; result -------------- {xx,NULL,zz} (1 row) SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'y') AS RESULT; result ------------ {xx,yy,zz} (1 row) 在string_to_array中,如果分隔符参数是NULL,输入字符串中的每个字符将在结果数组中变成一个独立的元素。如果分隔符是一个空白字符串,则整个输入的字符串将变为一个元素的数组。否则输入字符串将在每个分隔字符串处分开。
  • unnest(anyarray) 描述:扩大一个数组为一组行。 返回类型:setof anyelement 示例: 1 2 3 4 5 6 SELECT unnest(ARRAY[1,2]) AS RESULT; result -------- 1 2 (2 rows) unnest函数配合string_to_array数组使用。数组转列,先将字符串按逗号分割成数组,然后再把数组转成列: 1 2 3 4 5 6 7 8 SELECT unnest(string_to_array('a,b,c,d',',')) AS RESULT; result -------- a b c d (4 rows)
  • interval(N, N1, N2, N3 ... ) 描述:从输入的整数数组中,查找返回最后一个小于等于目标参数n的数组索引。若n为NULL,返回-1。interval函数不支持interval(N, N1)的场景。该函数仅8.2.0及以上集群版本支持。 返回类型:int 示例: 1 2 3 4 5 SELECT INTERVAL(10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11) AS RESULT; result -------- 11 (1 row)
  • array_to_string(anyarray, text [, text]) 描述:使用第一个text作为数组的新分隔符,使用第二个text替换数组值为null的值。 返回类型:text 示例: 1 2 3 4 5 SELECT array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*') AS RESULT; result ----------- 1,2,3,*,5 (1 row) 在string_to_array中,如果省略null字符串参数或为NULL,将字符串中没有输入内容的子串替换为NULL。 在array_to_string中,如果省略null字符串参数或为NULL,运算中将跳过在数组中的任何null元素,并且不会在输出字符串中出现。
  • split(string, delim) 描述:将字符串string按分隔符delimiter进行分隔,并返回数组。该函数仅8.2.0及以上集群版本支持。 返回类型:text[] 示例: 1 2 3 4 5 6 7 8 9 10 SELECT SPLIT('a-b-c-d-e', '-') AS RESULT; result ------------- {a,b,c,d,e} (1 row) SELECT SPLIT('a-b-c-d-e', '-')[4] AS RESULT; result -------- d (1 row)
  • array_cat(anyarray, anyarray) 描述:连接两个数组,支持多维数组。 返回类型:anyarray 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]) AS RESULT; result ------------- {1,2,3,4,5} (1 row) SELECT array_cat(ARRAY[[1,2],[4,5]], ARRAY[6,7]) AS RESULT; result --------------------- {{1,2},{4,5},{6,7}} (1 row)
  • has_function_privilege(function, privilege) 描述:当前用户是否有访问函数的权限。 返回类型:boolean 备注:has_function_privilege检查一个用户是否能以指定方式访问函数。其参数类似has_table_privilege。使用文本字符而不是OID声明一个函数时,允许输入的类型和regprocedure数据类型一样(请参考对象标识符类型)。访问权限类型必须是EXECUTE。
  • has_any_column_privilege(table, privilege) 描述:当前用户是否有访问表任何列的权限。 返回类型:boolean 备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或REFEREN CES 的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限,因此如果与has_table_privilege参数相同,has_any_column_privilege总是返回true。但是如果授予至少一列的列级权限也返回成功。
  • pg_has_role(role, privilege) 描述:当前用户是否有角色的权限。 返回类型:boolean 备注:pg_has_role检查用户是否能以特定方式访问角色。其参数类似has_table_privilege,除了public不能用做用户名。访问权限类型必须是MEMBER或USAGE的一些组合。 MEMBER表示的是角色中的直接或间接成员关系(也就是SET ROLE的权限),而USAGE表示无需通过SET ROLE也直接拥有角色的使用权限。
  • has_database_privilege(database, privilege) 描述:当前用户是否有访问数据库的权限。 返回类型:boolean 备注:has_database_privilege检查用户是否能以在特定方式访问数据库。其参数类似has_table_privilege。访问权限类型必须是CREATE、CONNECT、TEMPORARY或TEMP(等价于TEMPORARY)的一些组合。
  • has_table_privilege(table, privilege) 描述:当前用户是否有访问表的权限。 返回类型:boolean 备注:has_table_privilege检查用户是否以特定方式访问表。用户可以通过名字或OID(pg_authid.oid)来指定,public表明PUBLIC伪角色,如果缺省该参数,则使用current_user。该表可以通过名字或者OID声明。如果用名字声明,则在必要时可以用模式进行修饰。如果使用文本字符串来声明权限类型,该文本字符串必须是SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES或TRIGGER之一的值。可以给权限类型添加WITH GRANT OPTION,用来测试权限是否拥有授权选项。也可以用逗号分隔列出的多个权限类型,如果拥有任何所列出的权限,则结果便为true。 示例: 1 2 3 4 5 6 7 8 9 10 11 SELECT has_table_privilege('tpcds.web_site', 'select'); has_table_privilege --------------------- t (1 row) SELECT has_table_privilege('dbadmin', 'tpcds.web_site', 'select,INSERT WITH GRANT OPTION '); has_table_privilege --------------------- t (1 row)
  • has_column_privilege(table, column, privilege) 描述:当前用户是否有访问列的权限。 返回类型:boolean 备注:has_column_privilege检查用户是否以特定方式访问一列。其参数类似于has_table_privilege,可以通过列名或属性号添加列。想要的访问权限类型必须是SELECT、INSERT、UPDATE或REFERENCES的一些组合。 拥有表的表级别权限则隐含的拥有该表每列的列级权限。
  • 索引 在 GaussDB (DWS)中创建索引期间,索引名不能与模式名一起指定。该索引将在创建索引表的模式中自动创建。 图1 输入:索引 图2 输出:索引 输入:基于CASE函数的索引 函数索引是基于列函数或表达式计算结果创建的索引。 输入 1 2 3 4 5 6 7 8 9 CREATE UNIQUE index GCC_RSRC_ASSIGN_U1 ON GCC_PLAN.GCC_RSRC_ASSIGN_T ( (CASE WHEN( ENABLE_FLAG = 'Y' AND ASSIGN_TYPE = '13' AND WORK_ORDER_ID IS NOT NULL ) THEN WORK_ORDER_ID ELSE NULL END) ) ; 需要将表达式或函数放在()里。 输入:基于DECODE函数的索引 1 2 3 4 5 6 7 8 9 CREATE UNIQUE index GCC_PLAN_N2 ON GCC_PLAN.GCC_PLAN_T ( DECODE ( ENABLE_FLAG ,'Y' ,BUSINESS_ID ,NULL ) ) ; 输出 1 2 3 4 5 6 7 8 9 CREATE UNIQUE index GCC_PLAN_N2 ON GCC_PLAN.GCC_PLAN_T ( (DECODE ( ENABLE_FLAG ,'Y' ,BUSINESS_ID ,NULL )) ) ; 需要将表达式或函数放在()里。 ORA_HASH ORA_HASH函数用于计算给定表达式或列的哈希值。如果在CREATE INDEX中为列指定了此函数,则此函数将被删除。 输入 1 CREATE INDEX SD_WO.WO_WORK_ORDER_T_N3 on SD_WO.WO_WORK_ORDER_T (PROJECT_NUMBER, ORA_HASH(WORK_ORDER_NAME)); 输出 1 2 3 4 5 6 CREATE index WO_WORK_ORDER_T_N3 ON SD_WO.WO_WORK_ORDER_T ( PROJECT_NUMBER ,ORA_HASH( WORK_ORDER_NAME ) ) ; DECODE 如果在CREATE INDEX语句中给列加上DECODE函数,则上报syntax error at or near 'DECODE' (Script - gcc_plan_t.SQL)错误。 输入 1 CREATE UNIQUE index GCC_PLAN.GCC_PLAN_N2 on GCC_PLAN.GCC_PLAN_T (DECODE(ENABLE_FLAG,'Y',BUSINESS_ID,NULL)); 输出 1 2 3 4 5 6 7 8 9 10 CREATE UNIQUE index GCC_PLAN_N2 ON GCC_PLAN.GCC_PLAN_T ( DECODE ( ENABLE_FLAG ,'Y' ,BUSINESS_ID ,NULL ) ) ; CASE语句 CREATE INDEX中不支持CASE语句。 输入 1 2 3 4 5 6 7 8 9 CREATE UNIQUE index GCC_RSRC_ASSIGN_U1 ON GCC_PLAN.GCC_RSRC_ASSIGN_T ( (CASE WHEN( ENABLE_FLAG = 'Y' AND ASSIGN_TYPE = '13' AND WORK_ORDER_ID IS NOT NULL ) THEN WORK_ORDER_ID ELSE NULL END) ) ; 输出 1 2 3 4 5 6 7 CREATE UNIQUE INDEX gcc_rsrc_assign_u1 ON gcc_plan.gcc_rsrc_assign_t ( (( CASE WHEN( enable_flag = 'Y' AND assign_type = '13' AND work_order_id IS NOT NULL ) THEN work_order_id ELSE NULL END )) ); 父主题: 模式对象
  • 语法格式 设置事务的隔离级别、读写模式。 1 2 3 { SET [ LOCAL ] TRANSACTION|SET SESSION CHARACTERIS TICS AS TRANSACTION } { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...]
  • 参数说明 LOCAL 声明该命令只在当前事务中有效。 SESSION 声明这个命令只对当前会话起作用。 取值范围:字符串,要符合标识符的命名规范。 ISOLATION LEVEL 指定事务隔离级别,该参数决定当一个事务中存在其他并发运行事务时能够看到什么数据。 在事务中第一个数据修改语句(INSERT,DELETE,UPDATE,FETCH,COPY)执行之后,事务隔离级别就不能再次设置。 取值范围: READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 READ UNCOMMITTED:读未提交隔离级别,GaussDB(DWS)不支持READ UNCOMMITTED,如果设置了READ UNCOMMITTED,实际上使用的是READ COMMITTED。 REPEATABLE READ:可重复读隔离级别,仅仅能看到事务开始之前提交的数据,不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 SERIALIZABLE:事务可序列化,GaussDB(DWS)不支持SERIALIZABLE,如果设置了SERIALIZABLE,实际上使用的是REPEATABLE READ。 READ WRITE | READ ONLY 指定事务访问模式(读/写或者只读)。
  • 参数说明 IF EXISTS 使用这个选项,如果视图不存在时不会产生错误,仅有会有一个提示信息。 view_name 视图名称,可以用模式修饰。 取值范围:字符串,符合标识符命名规范。 column_name 可选的名字列表,视图的字段名。如果没有给出,字段名取自查询中的字段名。 取值范围:字符串,符合标识符命名规范。 SET/DROP DEFAULT 设置或删除一个列的缺省值,该参数暂无实际意义。 new_owner 视图新所有者的用户名称。 new_name 视图的新名称。 new_schema 视图的新模式。 view_option_name [ = view_option_value ] 该子句为视图指定一个可选的参数。 目前view_option_name支持的参数仅有security_barrier,当VIEW试图提供行级安全时,应使用该参数。 取值范围:boolean类型,TRUE、FALSE。 REBUILD 该子句用于视图解耦,可使用已保存的原始语句重新创建视图,恢复依赖关系。REBUILD注意事项如下: 重建视图会从当前视图开始,依次向后级联刷新与其关联的所有视图,如果其依赖的前向视图也为不可用状态,会触发自动重建。 不支持对有依赖关系的临时表及临时视图的解耦DROP,可以对没有依赖关系的临时视图进行REBUILD操作。 支持视图模式名称及视图名称的修改,REBUILD按照最新的名称重建,但是query部分保留原始定义。 基表字段类型仅支持大类(字符型、数字型、时间类型等)范围内的修改;当基表添加字段时,视图不会置为无效,且定义不变。 无效视图备份时以注释形式导出,恢复时需要自行手动处理。 GUC参数view_independent设置为on时,支持视图自动重建。 以下场景会触发上层级联视图无效: DROP TABLE/VIEW RENAME TABLE/VIEW ALTER TABLE DROP COLUMN ALTER TABLE CHANGE/ALTER COLUMN TYPE ALTER TABLE CHANGE/ALTER COLUMN NAME ALTER TABLE/VIEW NAMESPACE ALTER TABLE/VIEW RENAME ONLY 控制视图重建的范围,只重建视图及其所依赖的视图。当view_independent设置为on时,此功能可正常使用。
  • 示例 修改视图名称: 1 ALTER VIEW tpcds.customer_details_view_v1 RENAME TO customer_details_view_v2; 修改视图名称,新视图名前带有原视图所在的schema名: 1 ALTER VIEW tpcds.customer_details_view_v1 RENAME TO tpcds.customer_details_view_v2; 修改视图所属schema: 1 ALTER VIEW tpcds.customer_details_view_v2 SET schema public; 重建视图: 1 ALTER VIEW public.customer_details_view_v2 REBUILD; 重建依赖视图: 1 ALTER VIEW ONLY public.customer_details_view_v2 REBUILD;
  • 语法格式 设置视图列的默认值。 1 2 ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name SET DEFAULT expression; 取消列视图列的默认值。 1 2 ALTER VIEW [ IF EXISTS ] view_name ALTER [ COLUMN ] column_name DROP DEFAULT; 修改视图的所有者。 1 2 ALTER VIEW [ IF EXISTS ] view_name OWNER TO new_owner; 重命名视图,支持新视图名前带有原视图所在的schema名,不支持同时修改schema名。 1 2 3 4 ALTER VIEW [ IF EXISTS ] view_name RENAME TO new_name; ALTER VIEW [ IF EXISTS ] view_name RENAME TO schema.new_name; 设置视图的所属模式。 1 2 ALTER VIEW [ IF EXISTS ] view_name SET SCHEMA new_schema; 设置视图的选项。 1 2 ALTER VIEW [ IF EXISTS ] view_name SET ( { view_option_name [ = view_option_value ] } [, ... ] ); 重置视图的选项。 1 2 ALTER VIEW [ IF EXISTS ] view_name RESET ( view_option_name [, ... ] );
  • MODIFY修改列 MySQL使用 MODIFY关键字修改列数据类型、设置非空约束。DSC工具迁移时会根据GaussDB(DWS)的特性进行相应适配。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 CREATE TABLE IF NOT EXISTS `runoob_alter_test`( `dataType0` varchar(100), `dataType1` bigint, `dataType2` bigint, `dataType3` bigint )ENGINE=InnoDB DEFAULT CHARSET=utf8; ## A. ALTER TABLE runoob_alter_test MODIFY dataType1 smallint; ## B. ALTER TABLE runoob_alter_test MODIFY dataType1 smallint NOT NULL; ## C. ALTER TABLE runoob_alter_test MODIFY dataType1 smallint NOT NULL FIRST; ## D. ALTER TABLE runoob_alter_test MODIFY dataType1 smallint NOT NULL AFTER dataType3; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE TABLE "public"."runoob_alter_test" ( "datatype0" VARCHAR(400), "datatype1" BIGINT, "datatype2" BIGINT, "datatype3" BIGINT ) WITH ( ORIENTATION = ROW, COMPRESSION = NO ) NOCOMPRESS DISTRIBUTE BY HASH ("datatype0"); -- A. ALTER TABLE "public"."runoob_alter_test" MODIFY "datatype1" SMALLINT NULL DEFAULT NULL; -- B. ALTER TABLE "public"."runoob_alter_test" MODIFY "datatype1" SMALLINT NOT NULL; -- C. ALTER TABLE "public"."runoob_alter_test" MODIFY "datatype1" SMALLINT NOT NULL; -- D. ALTER TABLE "public"."runoob_alter_test" MODIFY "datatype1" SMALLINT NOT NULL; 父主题: 表(可选参数、操作)
  • current_setting(setting_name) 描述:当前的设置值。 返回值类型:text 备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如: 1 2 3 4 5 6 SELECT current_setting('datestyle'); current_setting ----------------- ISO, MDY (1 row)
  • read_global_var(global_setting_name) 描述:用于读取全局变量当前的设置值。 返回值类型:text 备注:read_global_var用于以查询形式获取global_setting_name的当前值。和SQL语句SHOW是等效的。 示例: 1 2 3 4 5 6 SET my.var = 1000; SELECT read_global_var('my.var'); read_global_var ----------------- 1000 (1 row)
  • set_config(setting_name, new_value, is_local) 描述:设置参数并返回新值。 返回值类型:text 备注:set_config将参数setting_name设置为new_value,如果is_local为true,则新值将只应用于当前事务。如果希望新值应用于当前会话,可以使用false,和SQL语句SET是等效的。比如: 1 2 3 4 5 6 SELECT set_config('log_statement_stats', 'off', false); set_config ------------ off (1 row) 如果GUC参数behavior_compat_options设置配置项为DISABLE_SET_GLOBAL_VAR_ON_DATANODE,则不可以通过该函数直接在DN上设置全局变量。
  • FOREIGN_KEY_CHECKS MySQL中的外键约束,GaussDB(DWS)不支持该属性修改表定义信息,DSC迁移时会将该属性删除。 输入示例 1 2 3 4 5 6 SET foreign_key_checks = 0; CREATE TABLE mall_order_dc ( id bigint NOT NULL AUTO_INCREMENT, order_id varchar(50) NOT NULL, key order_id(order_id) ); 输出示例 1 2 3 4 5 CREATE TABLE "public"."mall_order_dc" ( "id" BIGSERIAL NOT NULL, "order_id" VARCHAR(200) NOT NULL ) WITH (ORIENTATION = ROW, COMPRESSION = NO) NOCOMPRESS DISTRIBUTE BY HASH ("id"); CREATE INDEX "order_id" ON "public"."mall_order_dc" USING BTREE ("order_id"); 父主题: 表(可选参数、操作)
  • pg_verify_residualfiles() 描述:用于验证当前实例上所有残留文件列表中记录的文件是否为残留文件。该函数为实例级函数,与当前所在的数据库相关,可以在任意实例上运行。 参数类型:无 返回值类型:record 函数返回字段如下: 表2 pg_verify_residualfiles()返回字段 名称 类型 描述 result bool 是否完成验证 filepath text 残留文件记录路径 notes text 注释 示例: 1 2 3 4 5 SELECT * FROM pg_verify_residualfiles(); result | filepath | notes --------+---------------------------+------- t | pgrf_20200908160211441546 | (1 row) 本函数只能验证记录的文件在当前登录的数据库中是否是残留文件。如果记录的文件不属于当前登录的数据库,则不会进行校验行为。
共100000条