SQL CE动态查询

时间:2014-07-22 05:07:25

标签: sql sql-server-ce

SQL CE 3.5中的一个数据库表有一个主键。我想改变主键中的列,将其从nvarchar(7)扩展到nvarchar(20)。

我是否绝对需要删除主键来实现此目的?

如果我不知道主键的名称,如何使用脚本删除主键?

例如,名称为PK__sign_type__000000000000228E,因此它已动态生成。

我的客户端计算机上有200或300个这样的数据库,并且通用脚本是必需的,因为它们对于此主键都有不同的名称。

1 个答案:

答案 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并更改列。

请记住在重新创建时为主键指定正确的名称。