我有以下 CREATE 表查询:
-- Create table
CREATE TABLE USER2 (
-- Column definitions
OID NUMBER(19,0) NOT NULL,
CREATION_TIME TIMESTAMP (6) NOT NULL,
LAST_MOD_TIME TIMESTAMP (6) NOT NULL,
NAME VARCHAR2(500 CHAR) NOT NULL,
-- Other columns
-- Primary key constraint
CONSTRAINT USER_PK
PRIMARY KEY (OID),
-- Foreign key constraints
-- List of foreign key constraints
-- Unique key constraints
-- List of unique key constraints
-- Check constraints
CONSTRAINT USER_OID_NOTNULL_CK
CHECK (OID IS NOT NULL),
CONSTRAINT USER_CTM_NOTNULL_CK
CHECK (CREATION_TIME IS NOT NULL),
CONSTRAINT USER_LMT_NOTNULL_CK
CHECK (LAST_MOD_TIME IS NOT NULL),
CONSTRAINT USER_NME_NOTNULL_CK,
-- List of check constraints
);
当它在 Oracle 11g 中执行时,它会创建重复的检查约束;一组包含我明确指定的检查约束,另一组包含自动生成的检查约束,这些约束由我NOT NULL
在列定义中指定的数据库本身生成。
当我没有NOT NULL
在列定义中指定时,在 SQL Developer 的表定义视图中,列显示为Nullable Yes
.
我希望列显示为Nullable No
检查约束也将被命名。我怎样才能做到这一点?
无需将 NOT NULL 规范加倍,只需在定义列时命名 NOT NULL 约束,例如:
...
CREATION_TIME TIMESTAMP (6) constraint SCOPING2_CTM_NOTNULL_CK NOT NULL,
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句