是否可以更改SQL用户定义的数据类型?

时间:2008-10-25 00:37:42

标签: sql sql-server sql-server-2005 alias-data-type

我有一堆表使用PK列的用户定义数据类型。是否可以使用SQL Server 2005更改此类型?

1 个答案:

答案 0 :(得分:3)

我建议总是可以重构糟糕或过时的数据库设计,它只取决于你愿意去做多少工作。

如果您要使用代理键替换用户定义的数据,那么您应该能够简单地更改现有表以包含不可为空的标识列,这应该会导致所有现有记录被分配新密钥自动。

一旦使用唯一ID填充新字段,如果您需要移出并替换此表的外键引用,那么我只需更改这些表以包含新字段并使用如下内容:

UPDATE child_table 
SET new_fk_val = 
    SELECT new_pk_val 
    FROM parent_table
    WHERE parent_table.old_pk_val = child_table.old_fk_val

完成该步骤后,您可以删除旧的外键约束,删除旧的外键列,删除旧的主键列,建立新的主键约束,然后建立新的外键约束。 / p>

当然,如果父版和子表关系的旧版本在子表中有无效记录,则可能需要执行以下操作:

DELETE FROM child_table 
WHERE old_fk_val NOT IN 
    ( SELECT old_pk_val FROM parent_table)