Sql Sybase ASE数据库中的Alter视图

Sql Sybase ASE数据库中的Alter视图,sql,database,sap-ase,Sql,Database,Sap Ase,我使用Sybase ASE数据库,并使用下面的sql在数据库中创建视图: create view dbo.vb_user_list (db_name, user_email, user_sex) as select 'db01' , email, sex from db01.dbo.emp_hdr where enable = 1 union select 'db02' , email, sex from

我使用Sybase ASE数据库,并使用下面的sql在数据库中创建视图:

create view dbo.vb_user_list (db_name, user_email, user_sex) as
select  'db01' ,
        email,
        sex
from    db01.dbo.emp_hdr
where   enable = 1

union

select  'db02'  ,
        email,
        sex
from    db02.dbo.emp_hdr
where   enable = 1
该视图显示了来自db01和db02的所有用户,并且可以正常工作

但是,当我想更改此视图以显示来自db03的用户时,我创建了一个sql,如下所示:

alter view dbo.vb_user_list (db_name, user_email, user_sex) as
select  'db01' ,
        email,
        sex
from    db01.dbo.emp_hdr
where   enable = 1

union

select  'db02'  ,
        email,
        sex
from    db02.dbo.emp_hdr
where   enable = 1

union

select  'db03'  ,
        email,
        sex
from    db03.dbo.emp_hdr
where   enable = 1
但其错误信息如下:

 [ALTER - 0 rows, 0.002 secs]  [Code: 102, SQL State: 37000]  Incorrect syntax near '('.
我不明白为什么,有人能帮忙吗?

您必须先删除视图,然后(重新)创建视图<代码>更改视图不受Adaptive Server Enterprise支持


有关更多信息,请参阅。

您尚未说明您的ASE版本,因此有几个答案:

  • 对于15.7之前的ASE版本,您需要删除并(重新)创建过程;您需要确保在删除视图之前获取权限和任何审核设置的副本,因为这些设置也需要在重新创建视图后重新创建

  • 对于ASE 16.x,您可以使用
    创建或替换视图
    命令;虽然这基本上与下拉视图+
    创建视图
    相同,但一个好处是任何设置(如权限、审核设置)都将保持不变


如果您只是从db03.dbo.emp_hdr中查询并选择“db03”、电子邮件、性别,会发生什么情况,其中enable=1@MrSlim刚刚尝试过,没问题,它可以工作。删除视图并创建一个新视图?@sibert ya,它可以工作,只是想知道为什么不能使用alter view语法。无论如何,我还是非常感谢你。