我有个表叫abc,然后我把这个表改成123,
后来要新建一个表叫abc,然后提示错误表名已经存在。。
这个要怎么办?

解决方案 »

  1.   

    if object_id('abc')is not null drop table abc
    go
    create table abc(ID int )
      

  2.   

    常规标识符规则
    常规标识符的格式规则取决于数据库的兼容级别,兼容级别可以用 sp_dbcmptlevel 来设置。有关更多信息,请参见 sp_dbcmptlevel。当兼容级别为 80 时,规则是: 第一个字符必须是下列字符之一: 
    Unicode 标准 2.0 所定义的字母。Unicode 中定义的字母包括拉丁字母 a-z 和 A-Z,以及来自其它语言的字母字符。
    下划线 (_)、at 符号 (@) 或者数字符号 (#)。 
    在 SQL Server 中,某些处于标识符开始位置的符号具有特殊意义。以 at 符号开始的标识符表示局部变量或参数。以一个数字符号开始的标识符表示临时表或过程。以双数字符号 (##) 开始的标识符表示全局临时对象。 某些 Transact-SQL 函数的名称以双 at 符号 (@@) 开始。为避免混淆这些函数,建议不要使用以 @@ 开始的名称。后续字符可以是: 
    Unicode 标准 2.0 所定义的字母。
    来自基本拉丁字母或其它国家/地区脚本的十进制数字。
    at 符号、美元符号 ($)、数字符号或下划线。 
    标识符不能是 Transact-SQL 的保留字。SQL Server 保留其保留字的大写和小写形式。
    不允许嵌入空格或其它特殊字符。 
    当标识符用于 Transact-SQL 语句时,必须用双引号或括号分隔不符合规则的标识符。
      

  3.   

    if object_id('abc','u')is not null drop table abc
    go
    if object_id('123','u')is not null drop table [123]
    go
    create table abc(ID int )
    go
    exec sp_rename 'abc','123'
    go
     create table abc(ID int )
    go
    select * from [123]
    select * from abc
    /*注意: 變更物件名稱的任何部分將會破壞指令碼 (Script) 和預存程序 (Stored Procedure)。
    object 重新命名成 '123'。
    ID          
    ----------- ID          
    ----------- */
      

  4.   

    后来要新建一个表叫abc,然后提示错误表名已经存在。。 至于这个:先判断是否还存在表abc.
    if object_id('数据库名..abc')is not null 
       print '表abc还存在,请删除后再创建'
       --drop table abc
    else
       create table abc ...
    go
      

  5.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[abc]'))
    drop table abc系统表里还有记录的
    dbo.sysobjects这个是系统视图