将最大值设置为列

时间:2011-05-02 11:16:27

标签: mysql

我有一个名为age的列(int类型)的表。此列应保持最大值50.如果超过则不应更新该行。

表示此列shold取0到50之间的值。

如果我尝试将其更新为51,则不应允许。

任何人都可以提供帮助....!

3 个答案:

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