通过触发器限制mysql插入值

时间:2013-11-26 20:09:05

标签: mysql sql

我正在尝试创建一个触发器,以防止cname列的空字符串插入,以及empno列的小于7000和大于8000的值,方法是将其设置为null。我是这样做的:

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
);

1 个答案:

答案 0 :(得分:2)

如果在相应的if:

之后,你应该设置每一端
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;