【问题标题】:Create table gives error table already exist创建表给出错误表已存在
【发布时间】:2017-05-03 14:26:11
【问题描述】:

表1

Col1   Col2     Col3
 1   'Name1' 'Address1'

其中col1 是带有约束'constraint1' 的主键。

现在我想将Table1 重命名为Table2。在其中添加col1_1并将主键从'col1'更改为col1_1

然后创建名为'Table1'的新表

现在我已将表 Table1 重命名为 Table2 并在其中添加列 'col1_1' 作为部署脚本中的主键。

在预部署脚本中:

1:删除旧的主键约束。

2:使用 sp_rename 将 Table1 重命名为 Table2

当我发布数据库时,我收到错误“Table2”对象已存在于 Create 'Table2'

【问题讨论】:

  • 你能展示一下脚本吗?听起来你在sp_rename 之后没有GO
  • IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME ='Table1') BEGIN EXEC sp_rename 'Table1', 'Table2' END GO
  • 在 sp_rename 之后我确实有 GO
  • 重命名之前 Table2 已经存在的任何可能性...您提到了预部署脚本。如果您正在对此进行测试,是否有可能该脚本已经运行,因此 table2 确实已经存在......?或者脚本是否可能在已经运行了该脚本的架构上运行......?
  • 你能把整个剧本贴出来吗?这将帮助我们了解哪里出错了。

标签: sql sql-server sql-server-2008 sql-server-2005


【解决方案1】:

如果您可以访问 SSMS,或者您可以让 DBA 为您检查.. 那么请首先检查名称为 Table2 的对象是否已经存在。 你可以运行下面的 T-SQLs

USE DatabaseName
GO
select * from sysobjects
where name = 'Table2' 
GO

在上述查询的结果集中,xtype 将表示对象类型。您可以通过运行以下查询来获取对象类型列表:

SELECT * 
FROM master..spt_values
WHERE type = 'O9T'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2013-08-04
    • 2016-06-26
    • 2019-12-05
    相关资源
    最近更新 更多