4

一意のキー制約を持つ列 (theId) の重複を使用して、テーブルにいくつかの行を挿入しました。これを行うには、IDENTITY_INSERT をオフにしてからオンに設定しました。

これらの重複値を変更する必要があるため、これと同じ手法を更新しようとしましたが、機能していません。

SET IDENTITY_INSERT mytable OFF
update mytable set
theId = 5
WHERE mytableId in (40, 41)
SET IDENTITY_INSERT mytable ON

エラー: UNIQUE KEY 制約 'XI_mytale_mytableId_othercolumn_U' に違反しています。オブジェクト 'dbo.mytable' に重複するキーを挿入できません。

UPDATEでこれを行う方法はありますか?

4

1 に答える 1

2

SET IDENTITY_INSERT mytable ON; を設定した後、手動で値を追加できた ID 列と混同していると思います。一意の制約が定義された列を使用します。Unique Constraint を持つ列では、重複する値を追加することはできません。
一意の制約を持つ列に重複した値を追加できるようにしたい場合は、一意の値がないときに一意の制約がある理由として、一意の制約を簡単に削除できます。
次のステートメントを使用して、一意の制約を下げることができます。

ALTER TABLE TableName
DROP CONSTRAINT uc_ConstraintName
于 2013-10-25T19:05:13.580 に答える