sql >> Databasteknik >  >> RDS >> Mysql

Hur avbryter man INSERT-operationen i MySql-utlösaren?

Jag stötte på detta och även om lösningen fungerar kom jag senare över vad som känns som en bättre lösning för mig. Jag misstänker att detta inte var ett alternativ när den här frågan ursprungligen besvarades.

CREATE TRIGGER `TestTable_SomeTrigger`
BEFORE UPDATE ON `test_table`
FOR EACH ROW
BEGIN
    DECLARE msg VARCHAR(255);
    IF (SomeTestToFail = "FAIL!") THEN
        set msg = "DIE: You broke the rules... I will now Smite you, hold still...";
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
    END IF;

    -- Do any other code here you may want to occur if it's all OK or leave blank it will be
    --  skipped if the above if is true
END$$

Detta kommer nu att returnera ett trevligt (eller ont!) felmeddelande som du kan fälla. För mer information om detta se:http://dev.mysql.com/doc/refman/5.5/en/signal.html

Jag hoppas att detta hjälper någon annan!



  1. Bästa sättet att INFOGA många värden i mysqli?

  2. Den heliga graalen att rengöra input och output i php?

  3. Avancerad partitionsmatchning för partitionsmässig koppling

  4. Hur man konverterar tidsstämpel med millisekunder till datum i Oracle