以1种语法创建触发器插入更新删除

时间:2015-02-04 04:50:40

标签: php mysql triggers

这是我在oracle中的语法,任何人都可以帮助将它转换为mysql ??

CREATE trigger trigger_name  
before INSERT, UPDATE, DELETE ON xxx
FOR EACH ROW 
BEGIN 
IF INSERT THEN
    INSERT INTO LOG( nik, date_log, action, table) 
    VALUES ( 62057, NOW( ) ,  'insert', 'xxx') ;
ELSEIF UPDATE THEN
    INSERT INTO LOG( nik, date_log, action, table) 
    VALUES ( 62057, NOW( ) ,  'edit', 'xxx') ;
ELSEIF DELETE THEN
    INSERT INTO LOG( nik, date_log, action, table) 
    VALUES ( 62057, NOW( ) ,  'delete', 'xxx') ;
END IF;
END ;

1 个答案:

答案 0 :(得分:0)

在MySQL中,你需要三个独立的触发器:一个用于INSERT,一个用于UPDATE,一个用于DELETE。

作为一个例子,插入""触发器看起来像这样:

DELIMITER $$

CREATE TRIGGER trigger_name
BEFORE INSERT ON xxx
FOR EACH ROW 
BEGIN 
   INSERT INTO log(nik, date_log, action, `table`) 
   VALUES (62057, NOW(),'insert','xxx');
END$$

DELIMITER ;

(我相信TABLE是MySQL中的保留字,因此需要对列名table进行转义。规范模式是使用标识符周围的反引号。)

您需要遵循相同的模式为UPDATE和DELETE创建单独的触发器。