3

従業員テーブルにレコードを挿入する手順があります。@@identityを使用してempidを取得しますか?このプロシージャが複数のユーザーによって同時に呼び出される場合、同時に挿入された他の従業員のIDが返される可能性があります。システムによるIDのロックがないためですか?

--code --identity on for empid column
insert into employee(name)values('sahil'); @@identityを返す

SQL Server 2005を参照してください:@@ IDを使用しても安全ですか? IDのロックの問題

4

2 に答える 2

8

代わりにSCOPE_IDENTITY()を使用する必要があります。ただし、@@ IDENTITYは現在の接続を参照するため、他のユーザーがあなたに影響を与えることはありませんが、考慮すべき他の問題があります。

詳細はこちら

于 2009-05-19T12:32:53.147 に答える
3

@@identityは安全に使用できません。テーブルに、返される値であるIDを持つ別のテーブルへの挿入を伴うトリガーがある場合。挿入したばかりのidnetity値を取得するために使用しないでください。今はトリガーがないのではないかと思うかもしれませんが、トリガーがいつ追加されるかわからないため、データが混乱していることに気付くまでに長い時間がかかる可能性があります。

于 2009-05-19T18:12:11.380 に答える