我是SQLPlus的新手,我想在存储名称的列上强制执行CHECK CONSTRAINT。
我希望约束不允许输入以Q开头的名称。
这就是我所拥有的:
ALTER TABLE table1 ADD CONSTRAINT table1_name_ck CHECK( name, substr(1,1) ='q');
我收到了错误:
cannot validate (USER1.TABLE1_NAME_CK) - check constraint violated
AND错误
CHECK( name, substr(1,1) ='q')
*
ERROR at line 2:
ORA-00920: invalid relational operator.
我无法弄清楚如何修复这些错误或找到正确的方法来实现它。任何意见,将不胜感激!谢谢!。我不认为这个代码适用于小写q和大写Q但我现在只是尝试一下。
答案 0 :(得分:2)
您需要将列传递给substr
来电:
ALTER TABLE table1
ADD CONSTRAINT table1_name_ck CHECK( substr(name, 1,1) ='q' );
要使大写和小写有效,你需要加强一点:
ALTER TABLE table1
ADD CONSTRAINT table1_name_ck CHECK( substr(name, 1,1) NOT IN ('q','Q') );