使用ALTER TABLE添加NOT NULL约束时如何自定义约束名称
Oracle为NOT NULL约束自定义命名的操作方法
你可以在ALTER TABLE MODIFY语句中显式通过CONSTRAINT关键字指定约束名,正确写法如下:
ALTER TABLE ACTOR MODIFY FIRST_NAME VARCHAR2(45) CONSTRAINT CK_Fanme NOT NULL;
注意事项
- 执行语句前需确认
ACTOR表中现有数据的FIRST_NAME字段没有NULL值,否则约束创建会失败,你需要先将所有NULL行的FIRST_NAME填充为有效值后再执行上述语句 - 如果该字段之前已经存在未命名的NOT NULL约束,需要先删除原有约束再创建自定义命名的约束:
- 先查询该字段对应的现有非空约束名:
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'ACTOR' AND CONSTRAINT_TYPE = 'C' AND UPPER(SEARCH_CONDITION) LIKE '%FIRST_NAME%IS NOT NULL';- 执行删除原有约束的语句:
ALTER TABLE ACTOR DROP CONSTRAINT 替换为上一步查询到的约束名;- 再执行开头的自定义命名约束创建语句即可
- 注意你问题中误写的
FIST_NAME是拼写错误,正确字段名应为FIRST_NAME,执行时注意核对字段名避免报错
内容的提问来源于stack exchange,提问作者Phoenix
相关产品推荐
相关产品推荐

