觸發器—一個表插入資料時其他欄位同步自增長欄位

kngnng發表於2013-03-21
有這樣一個需求,表t1(id int,code int,name varchar(11)),其中id列是自增長欄位,在插入資料的同時,自動將code列同步id列

mysql觸發器:

DELIMITER $$

USE `AAA`$$

DROP TRIGGER /*!50032 IF EXISTS */ `test`$$

CREATE
    /*!50017 DEFINER = 'root'@'localhost' */
    TRIGGER `test` BEFORE INSERT ON `t1` 
    FOR EACH ROW BEGIN    
SET new.code=(SELECT IF(ISNULL(id),1,id+1) FROM (SELECT MAX(id) AS id FROM t1)tmp);
    END;
$$

DELIMITER ;

oracle觸發器:

create or replace trigger test
  before insert on t1  
  for each row
declare
  -- local variables here
begin
  :new.code := :new.id;
end test;


這樣能實現需求,但是效率會低。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26252014/viewspace-756720/,如需轉載,請註明出處,否則將追究法律責任。

相關文章