我在我的SQL Server 2008數據庫中有一個審計表,其中包含我正在審計的數據的XML。如何將XML數據中的標識ID列插入到SQL Server表中?
但是,在這個XML中,我需要審計表中審計記錄的ID。
問題在於ID是標識列。
因此,它是一種捕獲22,直到我知道ID,我才能插入XML,直到插入XML才找到ID。
我需要ID字段是一個標識列,我需要在XML中的ID。
我該怎麼做?
編輯:
從SQL鎖定的角度看,我知道這不應該工作,但它工作正常:
INSERT INTO Audit (
[Data]
,[CreatedUser]
,[CreatedDateTime]
,[LastModifiedUser]
,[LastModifiedDateTime]
) VALUES (
@Data
,@CreatedUser
,@CurrentDateTime
,@CreatedUser
,@CurrentDateTime
);
SELECT @NewAudit_ID = SCOPE_IDENTITY()
SELECT @Data = Data
FROM Audit WITH (NOLOCK)
WHERE Audit_ID = @NewAudit_ID
SET @Data.modify('
replace value of (/Search[1]/@Id[1]) with sql:variable("@NewAudit_ID")')
UPDATE Audit
SET Data = @Data
WHERE hAudit_ID = @NewAudit_ID
爲什麼將這項工作?我應該使用它嗎?
謝謝,這基本上是我認爲我必須做的。它不是整潔的,但如果它有效,那麼這是主要的。儘管我相信我必須將插入和更新放入兩個單獨的事務中才能完成這項工作。 – Russell 2009-12-02 23:56:19
我寧願使用'INSERT INTO AuditTable DEFAULT VALUES' - 對我來說更清楚。 – 2009-12-03 06:03:52