相关疑难解决方法(0)

什么是更改SQL Server中表列的字段长度的SQL

什么是SQL从做实地去nvarchar(50)nvarchar(250)

当我尝试通过SQL Server Management Studio更改它时,它不允许我这样做,所以我想我会直接尝试SQL而不是使用GUI.

sql sql-server

23
推荐指数
3
解决办法
9万
查看次数

使用主键更改Column数据类型

我在80多个不同的表中有一个ReferenceID varchar(6)列.我需要在分配ID的政府组织实施更改后,将其扩展到整个数据库中的varchar(8).

我希望声明一个游标来获取表名,如下所示:

DECLARE @TableName AS VARCHAR(200)
DECLARE TableCursor CURSOR LOCAL READ_ONLY FOR
SELECT t.name AS TableName
    FROM sys.columns c
        JOIN sys.tables t ON c.object_id = t.object_id
    WHERE c.name = 'ReferenceID'

OPEN TableCursor
    FETCH NEXT FROM TableCursor 
    INTO @TableName
Run Code Online (Sandbox Code Playgroud)

然后按如下方式编辑类型:

ALTER TABLE @TableName ALTER COLUMN ReferenceID VARCHAR(8)
Run Code Online (Sandbox Code Playgroud)

这会失败,因为该列是某些表中主键的一部分(并且PK中包含的列因表而异).

我真的不想为每个表手动删除并重新创建每个PK.

在游标内,是否有办法在更改数据类型之前禁用PK然后重新启用它,或者在更改数据类型的任何一侧删除并重新创建PK,请记住PK将取决于我们在哪个表中'目前正在看?

sql primary-key sql-server-2008

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

sql ×2

primary-key ×1

sql-server ×1

sql-server-2008 ×1