Ich möchte ein Insert-Trigger erstellen (siehe Bsp)
CREATE TRIGGER trg_erstelleKBid ON t_kurs
FOR INSERT
AS
INSERT INTO t_kursbesuche ( t_kurs_id, t_mitarbeiter_id, kb_status, fld1)
VALUES ( t_kurs.id, Null, Null,1)
er soll automatisch, nachdem ich ein Kurs erfasst habe, in der Tabelle Kursbesuche einen Datensatz eröffnen. Dort soll er die ID des Kurses übernehmen. Ich erhalte jeweils eine Fehlermeldung, dass ich keine Spaltennamen im Value haben darf. Ich möchte eigentlich nur den Wert der Kurs.id übertragen. Geht das überhaupt???
Ich erhalte jeweils eine Fehlermeldung, dass ich keine
Spaltennamen im Value haben darf. Ich möchte eigentlich
nur den Wert der Kurs.id übertragen. Geht das überhaupt???
Den Wert von t_kurs_id müßtest Du einer Variable zuweisen. Diese kannst Du dann in der VALUES-Klausel verwenden.
Ich nehme mal an, die Syntax ist Transact-SQL (MS SQL Server). Dann kannst Du die t_kurs_id aus der Tabelle inserted lesen und einer Variable wie folgt zuweisen:
CREATE TRIGGER trg\_erstelleKBid ON t\_kurs
FOR INSERT
AS
BEGIN
DECLARE @kursid INTEGER -- hier den korrekten Datentyp angeben
@kursid = SELECT t\_kurs\_id FROM inserted
-- Falls die Spalte in t\_kurs anders heißt, entspr. ändern
-- inserted hat die gleiche Struktur wie t\_kurs
INSERT INTO t\_kursbesuche ( t\_kurs\_id, t\_mitarbeiter\_id, kb\_status, fld1)
VALUES ( @kursid, Null, Null,1)
END
CREATE TRIGGER trg_erstelleKBid ON t_kurs
FOR INSERT
AS
BEGIN
DECLARE @kursid INTEGER @kursid = SELECT id FROM inserted
INSERT INTO t_kursbesuche ( t_kurs_id, t_mitarbeiter_id, kb_status, fld1)
VALUES (@kursid, Null, Null,1)
END
Server: Nachr.-Nr. 170, Schweregrad 15, Status 1, Prozedur trg_erstelleKBid, Zeile 6
Zeile 6: Falsche Syntax in der Nähe von ‚@kursid‘.
Server: Nachr.-Nr. 137, Schweregrad 15, Status 1, Prozedur trg_erstelleKBid, Zeile 8
Die Variable ‚@kursid‘ muss deklariert werden.
Hab nicht herausgefunden an was es liegen kann. Die Syntax sollte ja stimmer und die Variable @kursid sollte deklariert sein???
Siehts du wo es klemmt???
Gruss
Miggi
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]