首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server 2008 R2:通过删除特定表更改视图

Server 2008 R2:通过删除特定表更改视图
EN

Stack Overflow用户
提问于 2015-09-08 12:02:59
回答 1查看 33关注 0票数 1

我有以下3个表,并为所有三个表创建了视图。

Tables1

代码语言:javascript
复制
CREATE TABLE s1
(
 Cola INT,
 Colb VARCHAR(10)
);

Tables2

代码语言:javascript
复制
CREATE TABLE s2
(
 Cola INT,
 Colb VARCHAR(10)
);

Tables3

代码语言:javascript
复制
CREATE TABLE s3
(
 Cola INT,
 Colb VARCHAR(10)
);

插入

代码语言:javascript
复制
INSERT INTO s1 VALUES(1,'a');
INSERT INTO s1 VALUES(1,'b');

INSERT INTO s2 VALUES(3,'c');
INSERT INTO s2 VALUES(4,'d');

INSERT INTO s3 VALUES(1,'a');
INSERT INTO s3 VALUES(1,'b');

创建视图sx

代码语言:javascript
复制
CREATE VIEW sx as
SELECT * FROM s1
UNION ALL 
SELECT * FROM s2
UNION ALL
SELECT * FROM s3;

现在我有了这个:

代码语言:javascript
复制
SELECT * FROM Sx;

结果

代码语言:javascript
复制
-------------
cola    colb
-------------
1       a
1       b
3       c
4       d
1       a
1       b

注意事项:我想要删除cola包含值1的表的ALTER VIEW。据我所知,表s1s3有这些值。

注释1:如果所有表都包含值1,那么VIEW必须是drop

问题:如何通过检查上面给定的特定条件来更改视图?

EN

回答 1

Stack Overflow用户

发布于 2015-09-08 12:27:27

您可以使用一个代替触发器:

代码语言:javascript
复制
Create Trigger SX_Del On Sx Instead of delete
As 
Begin
    Delete s From s1 s Inner Join deleted d on d.Cola = s.Cola
    Delete From s2 Where cola in (Select Cola From deleted )
    Delete From s3 Where cola in (Select Cola From deleted )
End

就像视图中的每个不同的选择一样,您必须为每个表定义要删除的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32457350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档