create table t(c1 text not null DEFAULT '',c2 varchar(10) not null,id int identity(1,1));
---not null
insert into t(c1) values('A');
---自增列
SET IDENTITY_INSERT t on; --设置表自增列允许手动插入值
insert into t(id) values(null);
insert into t(id) values('');
---text
insert into t(c2) values('B1');
----设置Oracle兼容
ALTER SYSTEM SET 'COMPATIBLE_MODE'=2 SPFILE;
----重启数据库服务
----再执行上面测试
1、首先回答是否有类似的MySQL严格模式,是没有专门设置的MySQL这种严格模式。
2、针对图中MySQL严格模式的功能说明,回复如下:
(1)不支持对not null字段插入null值
在达梦或者Oracle中,只要表字段设置了not null就不允许插入null值(注意是null而不是''空字符串)。Oracle中''空字符串会默认转成null,达梦默认情况空字符串''和null是区分的,可以设置compatible_mode参数为Oracle兼容模式,空字符串''插入的时候默认会自动转成null插入。
(2)不支持对自增列插入''值
首先,达梦中表自增列(identity)默认情况下是不允许手动插入值的(可以会话级修改设置允许手动赋值),自增列数据类型只能是int和bigint 且非空(实测不允许插入''和null)。
(3)不支持text字段有默认值
达梦是可以支持text字段设置有默认值的。这一点不太清楚MySQL中不支持text字段有默认值是什么场景和情况。
相关建表测试语句