___ answer22343265 ___

Die Art, wie Sie versuchen, den Wert einer Spalte festzulegen, ist ein Update. Weil Sie es tun nach dem Einfügen Operation abgeschlossen ist.

Sie benötigen tatsächlich einen %code% Trigger.

Und um den gleichen neuen automatisch inkrementierten Wert der Primärschlüsselspalte derselben Tabelle zuzuweisen, holen Sie ihn besser von %code% .

Beispiel :

%Vor%

Hinweis : Stellen Sie sicher, dass Sie keinen vordefinierten Trigger mit demselben Namen und / oder Aktion haben. Wenn Sie einige haben, dann lassen Sie sie fallen, bevor Sie die neue erstellen.

    
___ tag123triggers ___ Trigger sind Regeln, die, wenn sie als wahr ausgewertet werden, eine oder mehrere Aktionen ausführen. ___ tag123insert ___ Insert ist eine Aktion zum Hinzufügen von Informationen zu einem größeren Container, in dem die Informationen gespeichert werden sollen. Einige Beispiele umfassen das Einfügen einer Datei in ein Dateisystem, das Einfügen eines Datensatzes in eine Datenbank oder das Einfügen eines Elements in eine Liste. ___ tag123sqlupdate ___ Eine SQL UPDATE-Anweisung wird verwendet, um vorhandene Zeilen in einer Tabelle zu ändern. ___ answer22343137 ___

Ich glaube nicht, dass Sie das tun können. Ein AFTER-INSERT-Trigger kann nicht die gleiche Tabelle ändern, weder durch ein UPDATE noch durch etwas in der Art:

%Vor%

Es gibt Fehler wie

%Vor%

Was Sie tun können, ist eine Transaktion:

Beispiel: Die Tabellenstruktur ist wie folgt

%Vor%

Transaktion

%Vor%

Daten überprüfen

%Vor%     
___ tag123mysql ___ MySQL ist ein freies, relationales Datenbank-Managementsystem (RDBMS), das die strukturierte Abfragesprache (SQL) verwendet. Verwenden Sie dieses Tag NICHT für andere DBs wie SQL Server, SQLite usw. Dies sind verschiedene DBs, die alle SQL verwenden, um die Daten zu verwalten. ___ qstntxt ___

Stellen Sie sich vor, ich hätte eine MySQL-Tabelle (tbl_test) mit diesen Feldern: ID, Titel, Priorität . Eine ID wird automatisch inkrementiert. Ich muss nach dem Einfügen das Feld priority mit einem Wert füllen, der dem Feld id entspricht.
Da ich neu mit MySQL-Triggern bin, sag mir bitte, was ich dafür schreiben muss. Ich habe etwas gemacht, aber ich denke, es ist nicht wahr:

%Vor%

Danke für Ihre Hilfe.

    
___

8

Stellen Sie sich vor, ich hätte eine MySQL-Tabelle (tbl_test) mit diesen Feldern: ID, Titel, Priorität . Eine ID wird automatisch inkrementiert. Ich muss nach dem Einfügen das Feld priority mit einem Wert füllen, der dem Feld id entspricht.
Da ich neu mit MySQL-Triggern bin, sag mir bitte, was ich dafür schreiben muss. Ich habe etwas gemacht, aber ich denke, es ist nicht wahr:

%Vor%

Danke für Ihre Hilfe.

    
Mohammad Saberi 12.03.2014, 05:37
quelle

2 Antworten

14

Die Art, wie Sie versuchen, den Wert einer Spalte festzulegen, ist ein Update. Weil Sie es tun nach dem Einfügen Operation abgeschlossen ist.

Sie benötigen tatsächlich einen before Trigger.

Und um den gleichen neuen automatisch inkrementierten Wert der Primärschlüsselspalte derselben Tabelle zuzuweisen, holen Sie ihn besser von information_schema.tables .

Beispiel :

%Vor%

Hinweis : Stellen Sie sicher, dass Sie keinen vordefinierten Trigger mit demselben Namen und / oder Aktion haben. Wenn Sie einige haben, dann lassen Sie sie fallen, bevor Sie die neue erstellen.

    
Ravinder Reddy 12.03.2014 06:05
quelle
1

Ich glaube nicht, dass Sie das tun können. Ein AFTER-INSERT-Trigger kann nicht die gleiche Tabelle ändern, weder durch ein UPDATE noch durch etwas in der Art:

%Vor%

Es gibt Fehler wie

%Vor%

Was Sie tun können, ist eine Transaktion:

Beispiel: Die Tabellenstruktur ist wie folgt

%Vor%

Transaktion

%Vor%

Daten überprüfen

%Vor%     
Abdul Manaf 12.03.2014 05:56
quelle

Tags und Links