2015-09-08 2 views
1

У меня есть 3 таблицы и созданный вид для всех трех таблиц.SQL Server 2008 R2: изменить представление, удалив определенную таблицу

Таблица: s1

CREATE TABLE s1 
(
Cola INT, 
Colb VARCHAR(10) 
); 

Таблица: s2

CREATE TABLE s2 
(
Cola INT, 
Colb VARCHAR(10) 
); 

Таблица: 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'); 

Создание View: 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 

Примечание: Я хочу ALTER VIEW, в котором я хочу, чтобы удалить эти таблицы, в которых cola содержит значение 1. И, по мне, таблицы s1 и s3 имеют эти значения.

Примечание 1: Если все таблицы содержит значение 1VIEW затем должен быть drop.

Вопрос: Как изменить вид, проверив определенное состояние, как указано выше?

ответ

0

Вы можете использовать вместо запуска:

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 

Так же, как каждый отдельный Выберите на ваш взгляд, необходимо определить, что должно быть удалено для каждой таблицы.

Смежные вопросы