我可以使用如下所示的触发器在表格中插入数据时强制执行数据限制:
create table com(id int);
DELIMITER ;;
CREATE TRIGGER checkage_bi BEFORE INSERT ON com FOR EACH ROW
BEGIN
DECLARE dummy,baddata INT;
SET baddata = 0;
IF NEW.id > 20 THEN
SET baddata = 1;
END IF;
IF NEW.id < 1 THEN
SET baddata = 1;
END IF;
IF baddata = 1 THEN
SELECT CONCAT('Cannot Insert This Because id ',NEW.id,' is Invalid')
INTO dummy FROM information_schema.tables;
END IF;
END;;
这将限制不符合限制条件的值 但问题是,如果我插入多个值,那么对于某些不符合条件的值,其他值也将从入口到表格进行限制。
我想要的是,当我插入多个值时,应跳过不符合条件的值,其余值插入表中
即。没有任何错误。
只会跳过坏值,其他值将被插入。
请给我一些想法。提前谢谢......
答案 0 :(得分:0)
为此目的,最好使用存储过程而不是触发器,因为在存储函数或触发器中不允许通过调用函数或触发器的语句修改已经使用(用于读取或写入)的表本身。
DELIMITER ;;
create table com(id int,var char(40));;
create procedure Validate(IN id int,IN var char(40))
BEGIN
declare entry_id int;
SET entry_id=id;
IF (id > 20) OR (id < 1) THEN
SET entry_id=NULL;
END IF;
insert into com values(entry_id,var);
END;;
这是输出屏幕