gpt4 book ai didi

sql - 重命名 SQL Server 表,通过 PK 和 FK 级联更改

转载 作者:行者123 更新时间:2023-12-02 21:55:30 25 4
gpt4 key购买 nike

我想找到一个 sql 命令或可以执行此操作的命令,其中我有一个名为 tblFoo 的表,并且我想将其命名为 tblFooBar。但是,我希望主键也改变,例如,目前是:

CONSTRAINT [PK_tblFoo] PRIMARY KEY CLUSTERED 

我想要更改名称以将其更改为:

CONSTRAINT [PK_tblFooBar] PRIMARY KEY CLUSTERED 

然后,递归地遍历并级联所有具有外键关系的表,例如。从此:

CHECK ADD  CONSTRAINT [FK_tblContent_tblFoo] FOREIGN KEY([fooID])

对此:

 CHECK ADD  CONSTRAINT [FK_tblContent_tblFooBar] FOREIGN KEY([fooID])

当然,我尽量不手动完成这一切,因为 a) 这是一个容易出错的过程,b) 它无法扩展。

最佳答案

这只是我的想法,并不完整(您需要为索引添加类似的代码)。此外,您还需要添加代码以避免重命名具有相同基本名称但附加字符的表中的对象 - 例如,此代码还将列出 tblFoo2 及其所有关联对象。希望这对您来说是一个开始。

DECLARE
@old_name VARCHAR(100),
@new_name VARCHAR(100)

SET @old_name = 'tblFoo'
SET @new_name = 'tblFooBar'

SELECT
'EXEC sp_rename ''' + name + ''', ''' + REPLACE(name, @old_name, @new_name) + ''''
FROM dbo.sysobjects
WHERE name LIKE '%' + @old_name + '%'

关于sql - 重命名 SQL Server 表,通过 PK 和 FK 级联更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/191787/

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