SQL ServerデータベースのテーブルStudent
のプライマリキーを削除する必要があります。
私はテーブルで編集しました、そして私が得たスクリプトは
ALTER TABLE dbo.Student
DROP CONSTRAINT PK__Student__9CC368536561EF8B
しかし、SQL Serverクエリブラウザーでこのスクリプトを実行して主キーを削除すると
メッセージを表示します
メッセージ3728、レベル16、状態1、行1
'PK__Student__9CC368536561EF8B'は制約ではありません。
メッセージ3727、レベル16、状態0、行1
私の懸念として、PK__Student__9CC368536561EF8B
がランダムに生成されると思いますscriptを使用して主キー制約を削除するのを手伝ってください。
前もって感謝します
Sys.key_constraintsテーブルで制約名を検索できます。
SELECT name
FROM sys.key_constraints
WHERE [type] = 'PK'
AND [parent_object_id] = Object_id('dbo.Student');
名前を気にせず、単に削除したい場合は、これと動的SQLの組み合わせを使用できます。
DECLARE @table NVARCHAR(512), @sql NVARCHAR(MAX);
SELECT @table = N'dbo.Student';
SELECT @sql = 'ALTER TABLE ' + @table
+ ' DROP CONSTRAINT ' + name + ';'
FROM sys.key_constraints
WHERE [type] = 'PK'
AND [parent_object_id] = OBJECT_ID(@table);
EXEC sp_executeSQL @sql;
このコードは、Aaron Bertrandからのものです( source )。
クリックするだけ
「データベース」>テーブル>テーブル名>キー>「PK__TableName__30242045」などの制約をコピーします
以下のクエリを実行します:
Query:alter Table 'TableName' drop constraint PK__TableName__30242045
私が得た答えは、変数とサブクエリが機能しないため、動的SQLスクリプトを使用する必要があるということです。次の作品:
DECLARE @SQL VARCHAR(4000)
SET @SQL = 'ALTER TABLE dbo.Student DROP CONSTRAINT |ConstraintName| '
SET @SQL = REPLACE(@SQL, '|ConstraintName|', ( SELECT name
FROM sysobjects
WHERE xtype = 'PK'
AND parent_obj = OBJECT_ID('Student')))
EXEC (@SQL)