デフォルト名で主キーがすでに存在しています:一時テーブルは:私は、<strong>はカーソル</strong>内のストアドプロシージャに次のコードを実行している
IF (OBJECT_ID('tempdb..#newSales','U') IS NOT NULL)
DROP TABLE #newSales
CREATE TABLE #newSales
(
AddressId INT NOT NULL,
ItemId INT NOT NULL,
[Date] DATE NOT NULL,
Sale REAL NULL
)
/* some code here */
ALTER TABLE #newSales
ADD PRIMARY KEY CLUSTERED ([AddressId] ASC, [ItemId] ASC, [Date] ASC)
定期
私は(名前は毎回異なる次のようなエラーになってしまいます):
データベースには、すでに 'PK __#newSale__34CE1EAA297D3472'という名前のオブジェクトがあります。
私は同様の質問をチェックしましたが、ほとんどは明示的に名前付きの制約があります。この場合、PKの名前は自動的に生成され、理論的には(このプロシージャを呼び出す複数の接続であっても)一意でなければならないので、これがどうなるか理解できません。
は、どのようなエラーの原因になることができますか?
おそらく2つのスレッドがコードを同時に実行しています。カーソルの中にテーブルを作成するのはいい考えのようではありません。 –
私は2つのスレッドがコードを実行している場合、同時に2つの同一の一時テーブルが存在することを理解しますが、自動生成された名前はこれで助けなければならない、そうではありませんか?生成された名前が同じである理由私はカーソルのテーブルについて... を知らない:なぜそれが悪い考えですか?どこで読むことができますか? – STiLeTT