SQL CE 3.5中的一个数据库表有一个主键。我想改变主键中的列,将其从nvarchar(7)扩展到nvarchar(20)。
我是否绝对需要删除主键来实现此目的?
如果我不知道主键的名称,如何使用脚本删除主键?
例如,名称为PK__sign_type__000000000000228E,因此它已动态生成。
我的客户端计算机上有200或300个这样的数据库,并且通用脚本是必需的,因为它们对于此主键都有不同的名称。
答案 0 :(得分:0)
首先查询INFORMATION_SCHEMA.COLUMNS以查看是否需要更改:
SELECT CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Shippers'
AND COLUMN_NAME = 'Company Name'
然后从表中获取约束名称,如下所示:
SELECT DISTINCT c.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS c INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS u ON c.CONSTRAINT_NAME = u.CONSTRAINT_NAME AND u.TABLE_NAME = c.TABLE_NAME
where c.CONSTRAINT_TYPE = 'PRIMARY KEY'
AND c.TABLE_NAME = 'Shippers'
然后,您可以构造主键drop并更改列。
请记住在重新创建时为主键指定正确的名称。