【发布时间】:2013-03-15 01:43:42
【问题描述】:
我正在尝试在 PL/SQL 中创建一个 before insert Trigger,以防止将空数据插入到表行中。 (强制执行非空条件并防止插入数字或特殊字符的触发器。
这是我创建的表。
CREATE TABLE CUSTOMER
(
CUSTOMER_ID INTEGER
, CUST_FORENAME VARCHAR2(50) NOT NULL
, CUST_SURNAME VARCHAR2(50) NOT NULL
, GENDER CHAR(1)
, EMAIL_ADDRESS VARCHAR2(30) NOT NULL
, CONSTRAINT CUSTOMER_PK PRIMARY KEY (CUSTOMER_ID)
ENABLE
);
还有我创建的触发器。
create or replace
TRIGGER CUS_MAND before insert OR update on CUSTOMER
begin
CASE
WHEN :NEW.CUST_FORENAME = NULL
THEN DBMS_OUTPUT.PUT_LINE ('Please enter customer forename.');
WHEN :NEW.CUST_SURNAME = NULL
THEN DBMS_OUTPUT.PUT_LINE ('Please enter customer surname.');
WHEN :NEW.EMAIL_ADDRESS = NULL
THEN DBMS_OUTPUT.PUT_LINE ('Please enter customer email address.');
END CASE;
END;
但是这个触发器没有成功。有人可以帮我解决这个问题吗?
【问题讨论】:
-
这是触发器的错误用法。依靠 NOT NULL 约束来强制执行 NOT NULL-ness 并根据需要使用客户端验证。
-
另外,您的问题应该描述“此触发器无法成功工作”的方式。
-
客户端验证是指在将信息发送到数据库之前检查应用程序的客户端部分是否已完成所有必填字段。
标签: sql plsql oracle11g sqlplus plsqldeveloper