gpt4 book ai didi

sql - 更改 SQL Server 中的用户定义类型

转载 作者:行者123 更新时间:2023-12-01 18:01:16 25 4
gpt4 key购买 nike

我在数据库中创建了一些用户定义的类型,如下所示

CREATE TYPE [dbo].[StringID] FROM [nvarchar](20) NOT NULL

并将它们分配给不同的表。我的数据库中的表采用各种架构(不仅仅是 dbo)

但是我意识到我需要更大的字段,并且我需要更改,例如从 [nvarchar](20) 增加到 [nvarchar](50),但是有没有 ALTER TYPE 语句。

我需要一个使用临时表/游标的脚本,并保存使用我的类型的所有表和字段。然后将现有字段更改为基本类型 - 例如从 CustID [StringID]CustID [nvarchar(20)]。删除用户类型并使用新类型重新创建它 - 例如nvarchar(50)最后将字段设置回用户类型

我没有在类型上定义规则,因此不必删除规则并重新添加它们。

感谢任何帮助。

最佳答案

这是我通常使用的,尽管有点手动:

/* Add a 'temporary' UDDT with the new definition */ 
exec sp_addtype t_myudt_tmp, 'numeric(18,5)', NULL


/* Build a command to alter all the existing columns - cut and
** paste the output, then run it */
select 'alter table dbo.' + TABLE_NAME +
' alter column ' + COLUMN_NAME + ' t_myudt_tmp'
from INFORMATION_SCHEMA.COLUMNS
where DOMAIN_NAME = 't_myudt'

/* Remove the old UDDT */
exec sp_droptype t_mydut


/* Rename the 'temporary' UDDT to the correct name */
exec sp_rename 't_myudt_tmp', 't_myudt', 'USERDATATYPE'

关于sql - 更改 SQL Server 中的用户定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1383494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com