sql >> Databáze >  >> RDS >> Mysql

Jak zrušit operaci INSERT ve spouštěči MySql?

Narazil jsem na to a přestože řešení funguje, později jsem narazil na to, co mi připadá jako lepší řešení. Mám podezření, že to nebyla možnost, když byla tato otázka původně zodpovězena.

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$$

To nyní vrátí pěknou (nebo zlou!) chybovou zprávu, kterou můžete zachytit. Další informace o tomto najdete na:http://dev.mysql.com/doc/refman/5.5/en/signal.html

Doufám, že to pomůže někomu dalšímu!



  1. ORA-06508:PL/SQL:Nelze najít volanou programovou jednotku

  2. Jak zakázat ukládání do mezipaměti SQLAlchemy?

  3. Vložit data do SQL Server 2017

  4. Jak získat všechny tabulky, které mají omezení primárního klíče vytvořené v databázi SQL Server - SQL Server / TSQL výukový program 57