【发布时间】:2018-10-03 10:03:13
【问题描述】:
当违反检查约束时,如何在 PL/SQL 中提供用户定义的错误消息?
CREATE TABLE "AP"."SOURCE"
(
,"RATING" CHAR(30 BYTE)
,"SUBMISSION_STATUS" CHAR(12 BYTE)
,"UOANAME" CHAR(32 BYTE)
,"W_INSERT_DT" TIMESTAMP (6)
,"W_UPDATE_DT" TIMESTAMP (6)
,"SCIVAL_CIT_CATEGORY" NUMBER(5,0)
,"TOTAL_AUTHORS" BINARY_DOUBLE
,"REF2014" CHAR(3 BYTE)
CONSTRAINT "Submission_Rating_not_valid"
CHECK ( Submission_status ='To be scored'
and Rating is null
or Submission_status ='NO'
and Rating is null
or Submission_status = 'Potential'
and Rating is not null
and Rating != 'Not REF Eligible'
or Submission_status ='Yes'
and Rating is not null
and Rating != 'Not REF Eligible'
or Submission_status ='No'
and Rating is not null
and Rating != 'Not REF Eligible'
or Submission_status ='No'
and Rating = 'Not REF Eligible'*) ENABLE
)
【问题讨论】:
-
在混合 AND 和 OR 时要小心...也许需要一些括号。
-
格式化后更易于阅读,您可以看到 AND / OR 组合确实需要括号。
-
除了上面提到的方面,请看一下Oracle保留名称和关键字。并且如果您为表名和列指定双引号,那么您在将来引用时必须使用双引号。
-
感谢大家的有用建议和提示。我已经改了。