1 |
SET NAMES指定COLLATE字句 |
SET [ SESSION | LOCAL ] NAMES {'charset_name' [COLLATE 'collation_name'] | DEFAULT}; |
GaussDB中SQL_ASCII库下暂不支持指定charset_name与数据库字符集不同。具体请参考《M-Compatibility开发指南》中“SQL参考 > SQL语法 > SQL语句 > S > SET ”章节。
不指定字符集时,MySQL会报错但GaussDB不报错。 |
2 |
支持DESCRIBE语句 |
{DESCRIBE | DESC}
tbl_name [col_name | wild] |
- 用户权限验证与MySQL存在差异。
- GaussDB中需要拥有指定表所在Schema的USAGE权限,同时还需要拥有指定表的任意表级权限或列级权限,仅显示拥有SELECT、INSERT、UPDATE、REFERENCES和COMMENT权限的列信息。
- MySQL中需要拥有指定表的任意表级权限或列级权限,仅显示拥有SELECT、INSERT、UPDATE、REFERENCES和COMMENT权限的列信息。
- 模糊匹配时涉及到字符串比较操作时,Field字段使用字符集utf8mb4、字符序utf8mb4_general_ci。
|
3 |
START TRANSACTION 支持开启一致性读快照 |
START TRANSACTION
[
{
ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ }
| { READ WRITE | READ ONLY } | WITH CONSISTENT SNAPSHOT
} [, ...]
]; |
- 在MySQL中,可重复读隔离级别下的事务,只有在执行第一个SELECT语句后才开始快照读。在GaussDB中,事务一旦开启,不仅第一个SELECT语句会进行快照读,第一个执行的DDL、DML或DCL语句也会建立事务的一致性读快照
- GaussDB的START TRANSACTION支持设置多次隔离级别/事务访问模式/开启一致性快照,覆盖生效。
|
4 |
SET设置用户变量 |
SET @var_name := expr |
- MySQL用户变量名支持使用转义字符或双重引号转义,GaussDB用户变量名不支持。
单引号括起的变量名,变量名不能出现单引号,如@'''、@''''、@'\''不支持,解析时匹配不到'或解析报错,如:
-- 解析报错
db_mysql=# SET @'''' = 1;
ERROR: syntax error at or near "@"
LINE 1: SET @'''' = 1;
-- 解析时匹配不到'
db_mysql=# SET @'\'' = 1;
db_mysql'#
双引号括起的变量名,变量名不能出现双引号,如@"""、@""""、@"\""不支持,解析时匹配不到"或解析报错,如:
-- 解析报错
db_mysql=# SET @"""" = 1;
ERROR: syntax error at or near "@"
LINE 1: SET @"""" = 1;
-- 解析时匹配不到"
db_mysql=# SET @"\"" = 1;
db_mysql"#
反引号括起的变量名,变量名不能出现反引号,如@```、@````、@`\``不支持,解析时匹配不到`或解析报错,如:
-- 解析报错
db_mysql=# SET @```` = 1;
ERROR: syntax error at or near "@"
LINE 1: SET @```` = 1;
-- 解析时匹配不到`
db_mysql=# SET @`\`` = 1;
db_mysql`#
|
5 |
SET设置系统参数 |
SET [ SESSION | @@SESSION. | @@ | LOCAL | @@LOCAL.] {config_parameter { TO | = } { expr | DEFAULT } | FROM CURRENT }}; |
- config_parameter为BOOLEAN类型系统参数时:
- 参数值直接设置为字符串形式的'1'/'0'、'true'/'false'时,M-Compatibility设置成功,MySQL设置失败。
- 参数值设置为子查询的查询结果,当查询结果为'true'/'false'、非整数类型1/0时,M-Compatibility设置成功,MySQL设置失败;当查询结果为NULL时,M-Compatibility设置失败,MySQL设置成功。
|