Hallo,
ich habe da ein Problem mit einem Trigger in meiner SQL-Server 2012 Datenbank. Tabelle und Trigger sind nicht von mir.
Ich habe der Tabelle eine neue Spalte hinzufügen müssen und muss nun ein Update auf diese Spalte ausführen, das alle NULL Werte durch den String "1" ersetzt.
[highlight=sql]
UPDATE TM_Teamgruppen set Mandant = '1' WHERE Mandant is NULL
[/highlight]
Beim Ausführen dieses Updates bekomm ich folgende Fehlermeldung:
Der Inhalt dieser Fehlermeldung ist mir klar, aber ich verstehe nicht, wieso er im Trigger auftritt und wie ich ihn beheben kann.
Dies ist der Trigger (die Stelle wo der Fehler auftritt, habe ich markiert):
[highlight=sql]
CREATE TRIGGER [dbo].[TM_Teamgruppen_Neu] ON [dbo].[TM_Teamgruppen]
FOR INSERT, UPDATE, DELETE
AS
declare @offset int
declare @aw int
declare @ID int
set @ID = (select GruppeID from inserted) <-- hier passiert der Fehler
if (NOT @ID > 0)
begin
EXECUTE tdv_DBOffset @offset OUTPUT
set @aw = (select autowert from inserted)
update TM_Teamgruppen
set GruppeID = @aw * 100 + @offset
where GruppeID < 1
end
[/highlight]
Hat jemand eine Ahnung oder Idee was ich da mache kann?
Danke schon mal
Andi
ich habe da ein Problem mit einem Trigger in meiner SQL-Server 2012 Datenbank. Tabelle und Trigger sind nicht von mir.
Ich habe der Tabelle eine neue Spalte hinzufügen müssen und muss nun ein Update auf diese Spalte ausführen, das alle NULL Werte durch den String "1" ersetzt.
[highlight=sql]
UPDATE TM_Teamgruppen set Mandant = '1' WHERE Mandant is NULL
[/highlight]
Beim Ausführen dieses Updates bekomm ich folgende Fehlermeldung:
Meldung 512, Ebene 16, Status 1, Prozedur TM_Teamgruppen_Neu, Zeile 10Die Unterabfrage hat mehr als einen Wert zurückgegeben. Das ist nicht zulässig, wenn die Unterabfrage auf =, !=, <, <=, > oder >= folgt oder als Ausdruck verwendet wird.
Die Anweisung wurde beendet.
Die Anweisung wurde beendet.
Dies ist der Trigger (die Stelle wo der Fehler auftritt, habe ich markiert):
[highlight=sql]
CREATE TRIGGER [dbo].[TM_Teamgruppen_Neu] ON [dbo].[TM_Teamgruppen]
FOR INSERT, UPDATE, DELETE
AS
declare @offset int
declare @aw int
declare @ID int
set @ID = (select GruppeID from inserted) <-- hier passiert der Fehler
if (NOT @ID > 0)
begin
EXECUTE tdv_DBOffset @offset OUTPUT
set @aw = (select autowert from inserted)
update TM_Teamgruppen
set GruppeID = @aw * 100 + @offset
where GruppeID < 1
end
[/highlight]
Hat jemand eine Ahnung oder Idee was ich da mache kann?
Danke schon mal
Andi
Comment