我有一个名为age的列(int类型)的表。此列应保持最大值50.如果超过则不应更新该行。
表示此列shold取0到50之间的值。
如果我尝试将其更新为51,则不应允许。
任何人都可以提供帮助....!
答案 0 :(得分:5)
试试这个:
CREATE TRIGGER check_trigger
BEFORE INSERT
ON table
FOR EACH ROW
BEGIN
IF NEW.age<0 OR NEW.age>50 THEN
CALL `Error: Wrong values for age`; -- this trick will throw an error
END IF;
END
答案 1 :(得分:3)
create table test (
age tinyint not null ) engine = myisam;
delimiter //
drop trigger if exists max_num//
create trigger max_num before insert on test
for each row
begin
if new.age < 0 or new.age > 50 then
set new.age = null;
end if;
end//
delimiter ;
insert into test (age) values (100);
为更新做同样的事情。
答案 2 :(得分:0)
您可以使用CHECK
约束:
CREATE TABLE person (
Name VARCHAR(80),
Age INT CHECK (Age BETWEEN 5 and 50));