Hallo zusammen,
ich hoffe von Euch kann mir einer helfen.
Ich habe eine SP die aufgerufen wird um Datensätze zu kopieren. Das hat bisher auch gut funktioniert, aber jetzt hat die betroffene Tabelle eine, ich nenn sie mal "Erweiterungstabelle" bekommen. In dieser darf der Kunde eigene Spalten anlegen, die er sich dann im Programm anzeigen lassen und bearbeiten kann. Das ganze wird dann in einer View entsprechend zusammengeführt.
Wenn nun (in meinem Fall sind es Warenkörbe) ein neuer Datensatz angelegt wird, wird über einen Trigger ein Datensatz in der Erweiterungstabelle angelegt, welcher dann schon mal die Grundinformationen enthält.
Für das Kopieren eines Warenkorbes gibt es noch eine weitere Tabelle, in der der Kunde definieren kann, welche Spalten aus der Erweiterungstabelle mit kopiert werden sollen.
Hier der betreffende Teil meiner SP
[highlight=sql]
ALTER PROCEDURE [dbo].[Copy_TM_Warenkorb2TM_Warenkorb] @QWKID int, @ZWKID int
AS
declare @WSSpalten varchar(4000)
declare @SQL varchar (8000)
-- TS_Warenkorb-Einträge kopieren
select @WSSpalten = (Select Spaltenliste from TM_Tabellen_Spalten WHERE TabellenName='TS_Warenkorb' AND Operation ='Kopieren')
IF ( isnull(@WSSpalten,'')!='' )
begin
Delete FROM TS_Warenkorb WHERE WarenkorbID=@ZWKID
set @SQL = 'INSERT INTO TS_Warenkorb (WarenkorbID,' + @WSSpalten + ') SELECT ' + cast(@ZWKID as varchar(12)) + ',' + @WSSpalten + ' FROM TS_Warenkorb WHERE WarenkorbID =' + cast(@QWKID as varchar(12)) + ''
execute (@SQL)
end
[/highlight]
Um den Eintrag "kopieren" zu können, muss ich den bereits generierten Eintrag löschen und dann den neuen per INSERT einfügen.
Kann ich dieses INSERT irgendwie durch ein UPDATE ersetzen?
Das hier meine ich:
[highlight=sql]
set @SQL = 'INSERT INTO TS_Warenkorb (WarenkorbID,' + @WSSpalten + ') SELECT ' + cast(@ZWKID as varchar(12)) + ',' + @WSSpalten + ' FROM TS_Warenkorb WHERE WarenkorbID =' + cast(@QWKID as varchar(12)) + ''
[/highlight]
Kann mir da jemand helfen?
EDIT: Ich arbeite mit einem SQL-Server 2012
ich hoffe von Euch kann mir einer helfen.
Ich habe eine SP die aufgerufen wird um Datensätze zu kopieren. Das hat bisher auch gut funktioniert, aber jetzt hat die betroffene Tabelle eine, ich nenn sie mal "Erweiterungstabelle" bekommen. In dieser darf der Kunde eigene Spalten anlegen, die er sich dann im Programm anzeigen lassen und bearbeiten kann. Das ganze wird dann in einer View entsprechend zusammengeführt.
Wenn nun (in meinem Fall sind es Warenkörbe) ein neuer Datensatz angelegt wird, wird über einen Trigger ein Datensatz in der Erweiterungstabelle angelegt, welcher dann schon mal die Grundinformationen enthält.
Für das Kopieren eines Warenkorbes gibt es noch eine weitere Tabelle, in der der Kunde definieren kann, welche Spalten aus der Erweiterungstabelle mit kopiert werden sollen.
Hier der betreffende Teil meiner SP
[highlight=sql]
ALTER PROCEDURE [dbo].[Copy_TM_Warenkorb2TM_Warenkorb] @QWKID int, @ZWKID int
AS
declare @WSSpalten varchar(4000)
declare @SQL varchar (8000)
-- TS_Warenkorb-Einträge kopieren
select @WSSpalten = (Select Spaltenliste from TM_Tabellen_Spalten WHERE TabellenName='TS_Warenkorb' AND Operation ='Kopieren')
IF ( isnull(@WSSpalten,'')!='' )
begin
Delete FROM TS_Warenkorb WHERE WarenkorbID=@ZWKID
set @SQL = 'INSERT INTO TS_Warenkorb (WarenkorbID,' + @WSSpalten + ') SELECT ' + cast(@ZWKID as varchar(12)) + ',' + @WSSpalten + ' FROM TS_Warenkorb WHERE WarenkorbID =' + cast(@QWKID as varchar(12)) + ''
execute (@SQL)
end
[/highlight]
Um den Eintrag "kopieren" zu können, muss ich den bereits generierten Eintrag löschen und dann den neuen per INSERT einfügen.
Kann ich dieses INSERT irgendwie durch ein UPDATE ersetzen?
Das hier meine ich:
[highlight=sql]
set @SQL = 'INSERT INTO TS_Warenkorb (WarenkorbID,' + @WSSpalten + ') SELECT ' + cast(@ZWKID as varchar(12)) + ',' + @WSSpalten + ' FROM TS_Warenkorb WHERE WarenkorbID =' + cast(@QWKID as varchar(12)) + ''
[/highlight]
Kann mir da jemand helfen?
EDIT: Ich arbeite mit einem SQL-Server 2012
Comment