SQL рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛ рдСрдбрд┐рдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдЯреНрд░рд┐рдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЙрджреНрджреЗрд╢реНрдп
рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХрд╛ рдСрдбрд┐рдЯ рдХрд░рдирд╛ рдХрднреА-рдХрднреА рдПрдХ рдмреБрд░реЗ рд╕рдкрдиреЗ рдЬреИрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдбрд╛рдпрд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕реЗ рдХрдИ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдерд╛ред
рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ рдерд╛, рдФрд░ рднрд╛рдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рдЯреНрд░рд┐рдЧрд░ рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рджреЛ рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВрдЧреЗ, рдПрдХ рд╣рдорд╛рд░реЗ рдЗрдЪреНрдЫрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде, рдлрд┐рд░ рджреВрд╕рд░рд╛ рд╕рдорд╛рди рдХреЙрд▓рдо рдФрд░ рдПрдХ рдкрд╣рдЪрд╛рди рдХреЙрд▓рдо, рджрд┐рдирд╛рдВрдХ рд╕рдордп рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
SQL
CREATE TABLE Audit(AuditID INT IDENTITY(1,1) CONSTRAINT PK_AuditID PRIMARY KEY,AuditData NVARCHAR(100))CREATE TABLE AuditAudit(AuditAuditID INT IDENTITY(1,1) CONSTRAINT PK_AuditAuditID PRIMARY KEY,AuditAuditDateTime DATETIME DEFAULT GETDATE(),AuditAuditProcess NVARCHAR(128),AuditID INT,AuditData NVARCHAR(100))рдХреНрдпрд╛ рдпреЗ рд╕рд╣рд╛рдпрдХ рдерд╛?
SQL
CREATE TRIGGER AuditUpdated ON Audit AFTER INSERT, UPDATE AS BEGINDECLARE @Cont VARCHAR(128) =(SELECT CAST(CONTEXT_INFO() as varchar(128)))--Retrieve Context InfoINSERT INTO AuditAudit(AuditAuditProcess,AuditID,AuditData)SELECT ISNULL(@Cont,CAST(@@Spid AS VARCHAR(20))),AuditID,AuditData FROM Inserted--Insert process id if there is not context addedENDGOрдХреНрдпрд╛ рдпреЗ рд╕рд╣рд╛рдпрдХ рдерд╛?
SQL
--insert with no contextINSERT INTO Audit(AuditData)SELECT '1'--insert with contextGODECLARE @Context_Info varbinary(128)SELECT @Context_Info = CAST('Insert'+SPACE(128) AS VARBINARY(128))--Declare the name for the contextSET CONTEXT_INFO @Context_Info--Update Context info to aboveINSERT INTO Audit(AuditData)--Run your codeSELECT '2'--update with contextGODECLARE @Context_Info varbinary(128)SELECT @Context_Info = CAST('Update'+SPACE(128) AS VARBINARY(128))--Declare the name for the contextSET CONTEXT_INFO @Context_Info--Update Context info to aboveUPDATE Audit SET AuditData='3' WHERE AuditID=1--Run your code--Select Records from the audit tableGOSELECT * FROM AuditAuditрдкрд░рд┐рдгрд╛рдо
рдЖрдкрдХреЗ рдЪрдпрди рд╡рд┐рд╡рд░рдг рдореЗрдВ рдиреАрдЪреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рддреАрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
| AuditID | AuditDateTime | AuditProcess | AuditId | AuditData |
| 1 | 2013-01-29 18:21:23.097 | 51 | 1 | 1 |
| 2 | 2013-01-29 18:21:27.433 | Insert | 2 | 2 |
| 3 | 2013-01-29 18:21:30.710 | Update | 1 | 3 |
рдкрд░рд┐рдгрд╛рдо
рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╛рдо рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рдерд╛ рдЬреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рддрд░рд╣ рдЖрдк рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИред