我有以下3个表,并为所有三个表创建了视图。
Table:s1
CREATE TABLE s1
(
Cola INT,
Colb VARCHAR(10)
);Table:s2
CREATE TABLE s2
(
Cola INT,
Colb VARCHAR(10)
);Table:s3
CREATE TABLE s3
(
Cola INT,
Colb VARCHAR(10)
);插入
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
CREATE VIEW sx as
SELECT * FROM s1
UNION ALL
SELECT * FROM s2
UNION ALL
SELECT * FROM s3;现在我有了这个:
SELECT * FROM Sx;结果
-------------
cola colb
-------------
1 a
1 b
3 c
4 d
1 a
1 b注意事项:我想要删除cola包含值1的表的ALTER VIEW。据我所知,表s1和s3有这些值。
注释1:如果所有表都包含值1,那么VIEW必须是drop。
问题:如何通过检查上面给定的特定条件来更改视图?
发布于 2015-09-08 12:27:27
您可以使用一个代替触发器:
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就像视图中的每个不同的选择一样,您必须为每个表定义要删除的内容。
https://stackoverflow.com/questions/32457350
复制相似问题