【问题标题】:MySQL Trigger delete after insert插入后MySQL触发器删除
【发布时间】:2015-02-03 19:01:00
【问题描述】:

我真的是创建触发器的新手,但我需要一些非常简单的东西,但我一直无法弄清楚如何去做。

基本上我有一个如下结构的表

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

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

谢谢

【问题讨论】:

    标签: mysql triggers


    【解决方案1】:

    您可以创建一个触发器,在插入之前查找 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
    $$
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2015-06-11
      • 2021-06-19
      • 2016-10-13
      • 1970-01-01
      相关资源
      最近更新 更多