删除主键并添加Transact-SQL

时间:2016-08-11 01:52:37

标签: asp.net sql-server tsql

我已经研究并尝试了所有的东西,我不知道我是否遗漏了一些东西,但这里是我试图放弃主键

Alter Table Course
Drop constraint PK_Course_CourseID
Go

表名为Course,PK为CourseID。然后我需要将PK约束重新添加到列“row”

3 个答案:

答案 0 :(得分:0)

删除主键约束:

在对象资源管理器中,右键单击包含主键的表,然后单击“设计”。

该表在表设计器中打开。

在表格网格中,右键单击包含主键的行,然后选择“删除主键”以将设置从“开”切换为“关闭”。

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

答案 1 :(得分: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)

希望这有帮助!

答案 2 :(得分: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 =&# 39;课程'
AND constraint_type =' PRIMARY KEY&#39 ;;如果@V_CONSTRAINTNAME不是NULL
开始设置@V_QUERY =' ALTER TABLE #DBNAME#。#USERNAME#.Course DROP CONSTRAINT' + @V_CONSTRAINTNAME;
exec sp_executesql @V_QUERY;
END;
结束
GO


DECLARE @V_COUNT INT;
BEGIN
SET @V_COUNT = 0;
SELECT @V_COUNT = COUNT(*)FROM INFORMATION_SCHEMA.table_constraints WHERE TABLE_NAME ='当然' AND CONSTRAINT_TYPE =' PRIMARY KEY';
如果@V_COUNT = 0
开始执行SP_EXECUTESQL N' ALTER TABLE #DBNAME#。#USERNAME#.Course ADD CONSTRAINT PK_Course_CourseID PRIMARY KEY(行)&#39 ;;
END;
END;
GO