sql >> Database teknologi >  >> RDS >> Mysql

Hvordan afbrydes INSERT operation i MySql trigger?

Jeg stødte på dette, og selvom løsningen virker, stødte jeg senere på, hvad der for mig føles som en bedre løsning. Jeg formoder, at dette ikke var en mulighed, da dette spørgsmål oprindeligt blev besvaret.

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

Dette vil nu returnere en pæn (eller ond!) fejlmeddelelse, som du kan fælde. For mere info om dette se:http://dev.mysql.com/doc/refman/5.5/en/signal.html

Jeg håber, at dette hjælper en anden!



  1. HikariCP:Hvilke timeouts på databaseniveau skal overvejes for at indstille maxLifetime for Oracle 11g

  2. Sådan aktiveres komprimering på en eksisterende tabel i SQL Server (T-SQL)

  3. CAST vs ssis dataflow implicit konverteringsforskel

  4. Forskellig repræsentation af UUID i Java Hibernate og SQL Server