Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在if语句中编写alter table查询_Sql_Sybase_Database Schema_Alter Table - Fatal编程技术网

Sql 在if语句中编写alter table查询

Sql 在if语句中编写alter table查询,sql,sybase,database-schema,alter-table,Sql,Sybase,Database Schema,Alter Table,我有一个具有列状态的table Person。下面的代码存在于我试图执行的sqlt文件中 if not exists(select 1 from sysobjects, syscolumns where sysobjects.id = syscolumns.id and sysobjects.name = 'Person' and syscolumns.name = 'Status') begin print "Inside the if statement" end go

我有一个具有列状态的table Person。下面的代码存在于我试图执行的sqlt文件中

if not exists(select 1 from sysobjects, syscolumns where sysobjects.id = syscolumns.id and sysobjects.name = 'Person' and  syscolumns.name = 'Status')

begin

    print "Inside the if statement" 

end


go
这很好,没有打印任何内容,因为表和列都存在。 如果我将文件更改为以下内容

if not exists(select 1 from sysobjects, syscolumns where sysobjects.id = syscolumns.id and sysobjects.name = 'Person' and  syscolumns.name = 'Status')
begin
    print "Inside the if statement"
    alter table Person
    add Status char(5) DEFAULT 'INVLD' NOT NULL
end

go
这不起作用,我收到以下错误消息:

Msg 2705,16级,状态3

服务器“NEXUS”,第6行

每个表中的列名必须是唯一的。表中的列名“Status” 多次指定“Person”


如果在这个代码中,它为什么会进入内部?解决这个问题的办法是什么?

我知道你不是在寻找这个答案,但这里说:不要这样做


原因是,结构更改是总体升级的一部分。对于给定的项目,升级不止一次(就像所有时间一样),并且通常涉及多个表中的多个列。因此,您可以创建(或使用)一个工具,只修改您的结构,并与使用特定列的业务逻辑分开处理该问题。

您为我指出的链接是sql。我和sybase一起工作。我已经到了可以让它工作的地步,但在特定的情况下它不起作用