2016-08-11 4 views
-1

のTransact-SQLに追加しますが、ここでは、主キードロップ主キーと私は何かが欠けていた場合、私は知らない私が研究し、すべてのものを試した

Alter Table Course 
Drop constraint PK_Course_CourseID 
Go 

表をドロップで私の試みはあります名前はCourseであり、PKはCourseIDです。主キーを持つテーブルを右クリックし、[デザイン]をクリックし、オブジェクトエクスプローラで

:私は、主キー制約を削除するには、列「行」に再度追加PK制約に

+0

PKはID列ですか?質問を編集してテーブル定義を表示します。 –

答えて

0

必要です。

テーブルデザイナーでテーブルが開きます。

テーブルグリッドで、プライマリキーを持つ行を右クリックし、[プライマリキーを削除]を選択して、設定をオンからオフに切り替えます。

出典: https://msdn.microsoft.com/en-us/library/ms190621(v=sql.105).aspx

+0

それは私が考えていないプログラム全体で動作しません。私はPKを追加して別の列を作成し、 "IS IDENTITY"というように追加したので、自動インクリメントして、以前のPKを使って別のレコードを追加しようとしたときにPKエラーが起きてクラッシュしました。エクスプローラでテーブルを変更するというアイデアは、プログラム内のすべての場所で変更されないためです。 – user3487671

+0

正確なエラーとは何ですか?私はちょうどこれを試みた、それは私のために正常に働いた。 – NoSaidTheCompiler

0

ドロップ主キー:

DECLARE @table NVARCHAR(512), @sql NVARCHAR(MAX);  
SELECT @table = N'dbo.Course'; 

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; 

変更前の列の型(シード/自動インクリメントした場合):

ALTER TABLE dbo.Course 
    ALTER COLUMN YourColumnName INT 

PK

ALTER TABLE Course ADD PRIMARY KEY (id) 
を追加します。

これは役に立ちます。

0

DECLARE @V_CONSTRAINTNAME NVARCHAR(256);
DECLARE @V_QUERY NVARCHAR(1000);
BEGIN
SELECT @ V_CONSTRAINTNAME = constraint_name FROM INFORMATION_SCHEMA.table_constraints
WHERE table_name = 'コース'
AND constraint_type = 'PRIMARY KEY';
IF @V_CONSTRAINTNAMEがNULLでない場合
BEGIN
SET @V_QUERY = 'ALTER TABLE #DBNAME#。#USERNAME#.Course DROP CONSTRAINT' + @V_CONSTRAINTNAME;
exec sp_executesql @V_QUERY;
END;
END
GO


DECLARE @V_COUNT INT;
BEGIN
SET @V_COUNT = 0;
INFORMATION_SCHEMA.table_constraintsからSELECT @ V_COUNT = COUNT(*)を選択してください。WHERE TABLE_NAME = 'コース' AND CONSTRAINT_TYPE = 'PRIMARY KEY';
IF @V_COUNT = 0
BEGIN
EXEC SP_EXECUTESQL N'ALTERテーブル#DBNAME#。#USERNAME#.CURSE ADD CONSTRAINT PK_Course_CourseID PRIMARY KEY(行) ';
END;
END;
GO