在 Sybase ASE 数据库中更改视图

Alter View in Sybase ASE Database

我使用 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 '('.

我不明白为什么,有人可以帮忙吗?

您必须先删除然后(重新)创建您的视图。 Alter View Adaptive Server Enterprise 不支持。

参考here了解更多信息。

您没有说明您的 ASE 版本,所以有几个答案:

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

  • 对于ASE16.x,可以使用create or replace view命令;虽然这与 drop view + create view 基本相同,但一个好处是任何设置(例如,权限、审核设置)都将保持不变