2013-11-26 29 views
0

我正在嘗試創建一個觸發器,以防止爲cname列插入空字符串,並且通過將其設置爲null來禁止empno列的小於7000和大於8000的值。這裏是我如何做到這一點:通過觸發器限制mysql插入值

delimiter $$ 
CREATE TRIGGER test1 
BEFORE insert 
ON clients 
FOR EACH row BEGIN 
if new.cname = '' THEN 
SET new.cname = null; 
if new.empno <7000 THEN 
SET new.empno = null; 
if new.empno>8000 THEN 
SET new.empno = null; 
end if; 
end if; 
end if; 
end; 

cname列工作正常。但是empno會接受任何事情,我不明白爲什麼。我的表是這樣的:

CREATE TABLE clients 
(
empno  INTEGER  NOT NULL DEFAULT 7654     
cname VARCHAR(20) NOT NULL 
); 

回答

2

您應該設置,如果以後如果相應的兩端:

delimiter $$ 
CREATE TRIGGER test1 
BEFORE insert 
ON clients 
FOR EACH row BEGIN 
if new.cname = '' THEN 
SET new.cname = null; 
end if; 
if new.empno <7000 THEN 
SET new.empno = null; 
end if; 
if new.empno>8000 THEN 
SET new.empno = null; 
end if; 
end; 
+0

現在的作品,因爲它應該。非常感謝你。 – Modaresi