MySQL declare variable im trigger-Fehler
Jemand wissen, was ist Los mit meinem trigger Erklärung?
CREATE TRIGGER `sch_trigger_curriculum_subject_before_insert` BEFORE INSERT ON
`sch_curriculum_subject` FOR EACH ROW
BEGIN
DECLARE curriculum_code VARCHAR(50);
SET curriculum_code = SELECT code FROM sch_curriculum WHERE id=NEW.id;
SET NEW.`code_name` = CONCAT(curriculum_code,' - ', NEW.code,' - (',NEW.name,')');
END;
Den Fehler: SQL-Fehler(1064): Sie haben Fehler in Ihnen, SQL-syntax ..... in der Nähe von " an der Linie 4.
Laut Fehlermeldung gibt es etwas falsch mit meinem curriculum_code Erklärung. Aber ich kann nicht herausfinden, was falsch ist.
Vielen Dank im Voraus
UPDATE:
schon gelöst, das problem ist auf Trennzeichen, hier ist die Arbeit eines
DELIMITER $$
CREATE TRIGGER `sch_trigger_curriculum_subject_before_insert` BEFORE INSERT ON
`sch_curriculum_subject` FOR EACH ROW
BEGIN
DECLARE curriculum_code VARCHAR(50);
SET curriculum_code = (SELECT code FROM sch_curriculum WHERE id=NEW.id);
SET NEW.`code_name` = CONCAT(curriculum_code,' - ', NEW.code,' - (',NEW.name,')');
END$$
- Ist curriculum_code mehrere Zeilen zurückgibt ?
- Nein, es ist nicht. Das problem ist auf Trennzeichen. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie sicherstellen, dass mehrere Werte werden nicht zurückgegeben von der
SELECT
.Versuchen:
Können Sie nicht zuordnen
SELECT
- Anweisung eine variable auf diese Weise. Zumindest sollten Sie dieSELECT
- Anweisung in Klammern eingeschlossen, um ihn auszuführen, als eine Unterabfrage, aber noch besser:Vorsichtig sein, dass die Abfrage nicht wieder mehrere Datensätze (man geht davon aus, dass es eine
UNIQUE
Einschränkung auf dieid
Spalte, so dass dies wahrscheinlich nicht ein Problem).Können Sie nicht einfach
SET curriculum_code = some_SQL
. Ich vermute, du meinstSELECT ... INTO curriculum_code