插入后删除MySQL触发器

时间:2015-02-03 19:01:00

标签: mysql triggers

我真的很新创造触发器,但我需要一些非常简单的东西,但我还没有弄清楚如何去做。

基本上我有一个表格,以下结构

Table Name orksegment
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| direction       | int(11)      | YES  |     | NULL    |                |
| duration        | bigint(20)   | NO   |     | NULL    |                |
| localEntryPoint | varchar(255) | YES  |     | NULL    |                |
| localParty      | varchar(255) | YES  |     | NULL    |                |
| loginString     | varchar(255) | YES  |     | NULL    |                |
| portName        | varchar(255) | YES  |     | NULL    |                |
| remoteParty     | varchar(255) | YES  |     | NULL    |                |
| sessionOffset   | bigint(20)   | NO   |     | NULL    |                |
| tapeOffset      | bigint(20)   | NO   |     | NULL    |                |
| timestamp       | datetime     | YES  |     | NULL    |                |
| port_id         | int(11)      | YES  | MUL | NULL    |                |
| session_id      | int(11)      | YES  | MUL | NULL    |                |
| tape_id         | int(11)      | YES  | MUL | NULL    |                |
| user_id         | int(11)      | YES  | MUL | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

我希望如果在我刚插入的记录中,localParty就像是' 192%'记录将被删除。

我做了类似的事情:

CREATE TRIGGER Delete_recordings_MoH
  AFTER INSERT
  ON  orksegment
  FOR EACH ROW 
 delete from orksegment where localparty like '192%';

但是当我这样做时,看起来所有条目都被删除了,因为我没有在表格中获得任何新记录。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以创建一个触发器,在插入之前查找localParty的新列值,并插入记录,如果它不像' 192%'

我认为这段代码可行:

DELIMITER $$
CREATE TRIGGER trigger_name BEFORE INSERT ON orksegment FOR EACH ROW
BEGIN
IF (NEW.localParty!='192%') THEN 
    INSERT INTO orksegment(all the column names) VALUES(New.columnA, New.ColumnB etc);
END IF
END
$$

如果这对您有用,请告诉我。