假设有个需求,向employee表中新增员工时,工资不准低于5000元。
1、使用check约束来实现
2、使用触发器来实现(触发器一般用来实现更复杂的约束,比如需要同时对多个表中的数据进行判断等,我们这里简单示例一下)
1、用check约束来实现
create table employee_1(
eno int primary key,
ename varchar(100),
deptno varchar(100),
job varchar(100),
sal float,
check (sal>=5000)
);
然后执行insert语句
insert into employee_1 values(10,'ting','B','数据库工程师',4000);
执行insert语句时mysql报错,提示 Error Code: 3819. Check constraint ‘employee_1_chk_1’ is violated.
2、使用触发器来实现
create table employee_2 (
eno int primary key,
ename varchar(100),
deptno varchar(100),
job varchar(100),
sal float
);
delimiter //
create trigger tr_sal before insert on employee_2 for each row
begin
if new.sal<5000 then
signal sqlstate 'ERROR' set message_text='工资不能低于5000元';
end if;
end//
delimiter ;
然后执行insert语句
insert into employee_2 values(10,'ting','B','数据库工程师',4000);
执行insert语句时mysql报错,提示:Error Code: 1644. 工资不能低于5000元