更改列是复合键-Sql Server

时间:2016-10-28 11:50:46

标签: sql-server

我正在尝试将版本列更改为十进制(3,1),但它会给出此错误

  

对象'PK__SlideVer__E0872D0E86F75C91'取决于“版本”列。

fkSlideId是外键。参见图像

enter image description here

2 个答案:

答案 0 :(得分:0)

正如@Buddi指出的那样,在更改列之前,您需要先删除主键和其他任何相关对象。

ALTER TABLE SlideVersion
DROP CONSTRAINT PK__SlideVer__E0872D0E86F75C91

答案 1 :(得分:0)

我刚给你看了一个示例。

CREATE TABLE TAR1
    (
    ID INT NOT NULL,
    NAME VARCHAR(20) NOT NULL
    )



        ALTER TABLE TAR1 ADD CONSTRAINT PK_1 PRIMARY KEY(ID,NAME)

        ALTER TABLE TAR1 ALTER COLUMN NAME VARCHAR(50) -- will throw an error

        ALTER TABLE TAR1 DROP CONSTRAINT PK_1

        ALTER TABLE TAR1 ALTER COLUMN NAME VARCHAR(50)  not null --You must specify not null
        ALTER TABLE TAR1 ADD CONSTRAINT PK_1 PRIMARY KEY(ID,NAME)