1

IGNORE_DUP_KEY が ON に設定された複合主キーを持つテーブルを SQL Server 2000 で作成しようとしています。

SQL Server Management Studio Express でこのオプションを探してみましたが、見つからなかったため、プログラムでテーブルを作成することになりました。Google または Stack Overflow で見つけたすべての SQL コマンドでエラーが発生します。

「(」付近の構文が正しくありません。

テーブルには 4 つの列 (A、B、C、D) がすべて 10 進数 (18) である必要があり、A、B、C の主キーが必要です。

誰かが CREATE コマンドの例を投稿できれば幸いです。

4

1 に答える 1

3
create table MyTable2 (
  [a] decimal(18,2) not null,
  [b] decimal(18,2) not null,
  [c] decimal(18,2) not null,
  [d] decimal(18,2),
  CONSTRAINT myPK PRIMARY KEY (a,b,c)
)

CREATE UNIQUE INDEX MyUniqueIgnoringDups
ON MyTable2 (a,b,c)
    WITH IGNORE_DUP_KEY       --SQL 2000 syntax
  --WITH(IGNORE_DUP_KEY = On) --SQL 2005+ syntax

--insert some data to test.
insert into mytable2 (a,b,c,d) values (1,2,3,4);--succeeds; inserts properly
insert into mytable2 (a,b,c,d) values (1,2,3,5);--insert fails, no err is raised.
-- "Duplicate key was ignored.   (0 row(s) affected)"

興味のある方のために、MSDNフォーラムのErlandSommarskogから何が起こっているかについての説明があります。

がOFFの場合IGNORE_DUP_KEY、キー値が重複するとエラーが発生し、ステートメント全体がロールバックされます。つまり、ステートメントが複数の行を挿入しようとした場合、行は挿入されません。

がオンの場合IGNORE_DUP_KEY、重複するキー値は単に無視されます。ステートメントは正常に完了し、他の行が挿入されます。

于 2011-04-05T01:22:11.210 に答える