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
따라서 EmpContact 테이블에도 UpdatedBy
열을 추가해야합니다.
하여 현재는 다음과 같은 방법으로 로그인 한 사용자가 얻을 :
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-서버 트리거를 작성하는 방법을 알고 싶어 당신의 EmpContact 레코드가 생성 (편집, 삭제) 될 때 직원 테이블?! –
네,하지만 주된 문제는 수정이 이루어진 대신 현재 loggin useID를 얻는 방법입니다. 해당 사용자 ID는 데이터베이스 사용자가 아니라 로그인 한 멤버십 공급자 사용자입니다. – Tassadaque