2013-11-25 60 views
0

我可以在數據插入的一個表中的時間使用觸發像以下實施數據限制跳過幾個值:如何可以將多個值在表中插入在MySQL

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

這將限制值,其將不符合限制條件。
但問題是,如果我插入多個值,那麼對於某些不符合條件的值,其他值也將被限制進入表格。

我想要的是,當我沿着那麼不符合條件的值應該被跳過,其餘得到插入到表

即沒有給出任何錯誤插入多個值。

只有不良值將被跳過,其他值將被插入,就是這樣。

請給我一些想法做so.Thanks提前...

回答

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

這裏是輸出屏幕

output