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

TRIGGERE, der får INSERT'er til at fejle? Muligt?

Fra denne blogindlæg

MySQL-udløsere:Hvordan afbryder du en INSERT, UPDATE eller DELETE med atrigger? På EfNets #mysql spurgte nogen:

Hvordan får jeg en trigger til at afbryde handlingen, hvis min forretningsregel mislykkes?

I MySQL 5.0 og 5.1 skal du ty til nogle tricks for at få atrigger til at fejle og levere en meningsfuld fejlmeddelelse. MySQL StoredProcedure FAQ siger dette om fejlhåndtering:

SP 11. Har SP'er en "raise"-erklæring for at "hæve applikationsfejl"? Beklager, ikke pt. SQL-standard SIGNAL- og RESIGNAL-sætningerne er på TODO.

Måske vil MySQL 5.2 inkludere SIGNALstatement, som vil gøre denne hackstjålet direkte fra MySQL StoredProcedure Programmering forældet. Hvad er hacket? Du vil tvinge MySQL til at forsøge at bruge en kolonne, der ikke eksisterer. Grim? Ja. Virker det? Selvfølgelig.

CREATE TRIGGER mytabletriggerexample
BEFORE INSERT
FOR EACH ROW BEGIN
IF(NEW.important_value) < (fancy * dancy * calculation) THEN
    DECLARE dummy INT;

    SELECT Your meaningful error message goes here INTO dummy 
        FROM mytable
      WHERE mytable.id=new.id
END IF; END;


  1. Sådan importeres XML-fil til MySQL-databasetabel ved hjælp af XML_LOAD(); fungere

  2. Eventuelle ulemper ved bitflag i databasekolonner?

  3. Oracle:hvordan man INDSÆTTER, hvis en række ikke eksisterer

  4. SQL Server-streng eller binære data vil blive afkortet