[通过使用XML比较表结构时,我们在检查约束相同的业务逻辑的表结构中得到了不同。请检查并向我们解释差异。
CREATE TABLE ESWAR(ID INT NOT NULL, NAME VARCHAR2(10));
ALTER TABLE ESWAR ADD CHECK("NAME" IS NOT NULL);
添加检查后的表定义:
create table ESWAR
(
id INTEGER not null,
name VARCHAR2(10) not null
);
丢弃创建的系统约束
SELECT T.CONSTRAINT_NAME FROM ALL_Constraints t WHERE t.TABLE_NAME='ESWAR' AND T.SEARCH_CONDITION_VC='"NAME" IS NOT NULL';--SYS_C00179403
ALTER TABLE ESWAR DROP CONSTRAINT SYS_C00179403;
再次创建检查约束如下
ALTER TABLE ESWAR
ADD CONSTRAINT CONST_ESWAR_CHECK
CHECK ("NAME" IS NOT NULL);
创建约束后的表定义:
create table ESWAR
(
id INTEGER not null,
name VARCHAR2(10)
);
-- Create/Recreate check constraints
alter table ESWAR
add constraint CONST_ESWAR_CHECK
check ("NAME" IS NOT NULL);
SELECT * FROM ALL_Constraints t WHERE t.TABLE_NAME='ESWAR' AND T.SEARCH_CONDITION_VC='"NAME" IS NOT NULL';---CONST_ESWAR_CHECK
在您的情况下,约束是相同的。
当您手动创建约束时,Oracle提供了一些在直接列约束上不可用的选项。
NOT NULL