我有一個允許用戶在數據庫中插入項目的表單。我調用Scope_Identity()來插入最後的標識值。這工作正常。當插入項目時,隨機生成的passowrd也保存在我的數據庫中。插入項目後,我也需要立即檢索此密碼。我該怎麼做呢?如何在插入後立即獲取項目數據
0
A
回答
0
通過調用Scope_Identity(),根據剛剛收到的ID執行查詢以獲取密碼。
您使用的是什麼技術?
+0
感謝您的幫助。我只是認爲可能有另一種方式。 – Anelim 2010-02-10 13:10:35
0
僞代碼:
insert into sometable
declare @ID int
set @ID = Scope_Identity()
select password from passwordtable where id = @ID
0
大概就可以得到插入之前,新密碼參考發生,我覺得這是最好的方法 - 這將防止需要做一個插入物,隨後用SELECT讀出密碼 - 刪除第二步。
例如 假設你使用NEWID()生成一個密碼,你會怎麼做:
DECLARE @Pwd VARCHAR(36)
DECLARE @NewId INTEGER
SELECT @Pwd = CAST(NEWID() AS VARCHAR(36))
INSERT MyTable (SomeField, Pwd)
VALUES (@SomeValue, @Pwd)
SELECT @NewId = SCOPE_IDENTITY()
@Pwd和@NewId將OUTPUT參數(我做這個作爲一個存儲過程)。如果可能的話,海事組織會更喜歡做不必要的閱讀。
(NB。我忽略了點關於實際如何密碼/未明文存儲)
1
如果使用的是SQL Server 2008中您可以使用輸出條款的範圍,而不是身份。使用輸出子句,您可以輸出多個字段。來自Books在線的代碼的一個示例:
DECLARE @MyTableVar table(ScrapReasonID smallint,
Name varchar(50),
ModifiedDate datetime);
INSERT Production.ScrapReason
OUTPUT INSERTED.ScrapReasonID, INSERTED.Name, INSERTED.ModifiedDate
INTO @MyTableVar
VALUES (N'Operator error', GETDATE());
你是在做一個sp嗎? – 2010-02-10 13:00:44
你在使用數據集嗎?或第三方DAL? – 2010-02-10 13:02:02