Re: Triggers und History

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance



Günter Prossliner schrieb:
Primary Keys sind nämlich primär keine Indexes, sonderen Constraints (also in sys.objects): SELECT * FROM sys.objects WHERE type='PK', wobei Du auf "parent_object_id" joinen musst

Danke für diesen Tipp. Hätte in meinem Fall wohl überall funktioniert aber für die Zukunft merke ichs mir.

Bei einer keinen Tabelle funktioniert der Update und Delete Trigger den ich auf diese weise für die Tabelle generiere wunderbar.
Ein Test an einer grösseren Tabelle hat aber gezeigt, dass nvarchar(max) nicht genügend platz für das ganze generierte Statement bietet.
Der Code Hört also mitten drinn auf und generiert einen Fehler.

Ansonsten ist alles so aufgebaut, wie du das vorhin nochmals aufgezeigt hast.

Deine Annahme, ich möchte ein History Eintrag pro Spalte ist ebenfalls richtig.
Hier ist das Insert Statement für eine solche Spalte: (Von diesen kann es je nach Tabelle einige geben)

insert into dbo.a_History
(ID_ConcernedEntry, ValueOld, ValueNew, ConcernedField, ConcernedTable, ID_HistoryType, LoginName, [TimeStamp])
(select i.[ID_Person] as ID_ConcernedEntry,
cast(d.[ID_Company] as varchar(50)) as ValueOld,
cast(i.[ID_Company] as varchar(50)) as ValueNew,
'ID_Company' as ConcernedField,
'tbl_Person' as ConcernedTable,
2 as ID_HistoryType,
SYSTEM_USER as LoginName,
getdate() as TimeStamp
from Inserted i
join Deleted d on i.[ID_Person] = d.[ID_Person]
where i.[ID_Company] != d.[ID_Company])



.



Relevant Pages

  • Re: Schnelles Auffinden doppelter Daten
    ... als einmal in der Tabelle vorkommt. ... CREATE TABLE #arbeitstabelle ... INSERT INTO #arbeitstabelle SELECT DISTINCT key, val FROM tabelle ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Re: Objekte ohne Schema Name in Prozedur
    ... EXEC sp_executesql N'SELECT * FROM Tabelle', ... Von dort werden die 3 Schlüssel geholt, auf die der Aufrufer Zugriff hat. ... Die eine Prozedur gibt also aus kAufträge jedem Aufrufer andere Zeilen zurück. ... Sonst braucht man pro Aufrufer und Tabelle je eine Sicht und ein Synonym. ...
    (microsoft.public.de.sqlserver)
  • Re: FAQ 3.16 mit spezieller einschraenkung der Datumsrange in der A-Tabelle
    ... den in Tabelle B gegebenen Datumsrange eingegrenzt sein, ... SELECT A.* ... FROM A LEFT JOIN B ON A.ID=B.ID ... AND A.DATUM BETWEEN MINAND MAX; ...
    (microsoft.public.de.access)
  • Re: SQL-Frage für "Profis"
    ... Schleife über Deine Tabelle. ... DECLARE wert_cursor CURSOR ... FOR SELECT wert FROM table1 ORDER BY datum ... END ...
    (microsoft.public.de.sqlserver)
  • Re: Problem bei Tabelle und Abfrage
    ... SELECT count(*) from Tabelle X ... Außerdem ist diese Variante sicher nicht der "Renner", ...
    (microsoft.public.de.access)