創建一個插入/更新/刪除觸發器更新Emplyoee表EmpContact記錄被創建時/更新/刪除,例如(插入):
CREATE TRIGGER [dbo].[trgCreateEmpContact] ON [dbo].[EmpContact]
FOR INSERT
AS
UPDATE dbo.Employee
SET UpdateDate=GetDate(), UpdatedBy = I.UpdatedBy
FROM Employee E
INNER JOIN Inserted I ON E.EmpID = I.EmpID
因此您需要將UpdatedBy
列添加到您的EmpContact表中。
你得到的當前登錄的用戶以下列方式:
MembershipUser currentUser = Membership.GetUser();
GUID currentUserID = (GUID)currentUser.ProviderUserKey;
另一個(更好)的方法是創建一個存儲過程在內部創建EmpContact記錄,並在事務更新Employee表,例如(未經測試):
CREATE PROCEDURE [dbo].[InsertEmpContact]
@ContactID int OUTPUT,
@Contact varchar(50) OUTPUT,
@EmpID int OUTPUT,
@UpdateDate datetime OUTPUT,
@UpdatedBy int OUTPUT,
with execute as Owner
AS
BEGIN TRANSACTION
INSERT INTO EmpContact(Contact, EmpID)
VALUES (@Contact,@EmpID)
;SELECT @ContactID=ContactID,@Contact=Contact,@EmpID=EmpID,@UpdateDate=GetDate()
FROM EmpContact WHERE (ContactID = SCOPE_IDENTITY())
;UPDATE dbo.Employee
SET [email protected], UpdatedBy = @UpdatedBy
WHERE EmpID = @EmpID
IF @@ERROR <> 0
BEGIN
-- Rollback the transaction
ROLLBACK
RETURN
END
COMMIT
請澄清:你想知道如何創建一個SQL-Server觸發器,更新您的EmpContact記錄創建(編輯,刪除)時的員工表? –
是的,但主要問題是如何獲取當前的用戶代碼修改已完成的useID。該用戶標識不是數據庫用戶,而是登錄的成員資格提供者用戶 – Tassadaque