|
|
|
Supreme Being
      
участник
Last Login: 06.07.2008 10:37
Сообщ.: 236,
Visits: 1 734
|
|
Друзья, пишу скрипт на создание нескольких VIEW,
и нужно на это дело создать транзакцию.
Для этого declare @flag - переменную, как флаг ошибок, присваиваю ей значение @@error после каждого CREATE. Но CREATE VIEW сильно ругается без GO.
А после GO скрипт не видит @flag, можно конечно создать временную таблицу и работать с ней как с @flag, но после GO скрипт не видит и begin tran.
Как быть???
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.03.2006 12:42
Сообщ.: 55,
Visits: 606
|
|
Нельзя помещать несколько выражений create view в один блок команд и, следовательно, для помещения их в одну транзакцию необходимо писать:
begin tran tr1
go
CREATE VIEW View1
AS
SELECT * FROM table1
go
CREATE VIEW View2
AS
SELECT * FROM table2
go
commit tran tr1
При этом определенные переменные после поступления команды go потеряются.
Выход, я думаю, - не запихивать "CREATE VIEW" по три штуки в одну транзакцию, а выполнять их последовательно с обработкой возможной ошибки после каждого
"CREATE VIEW".
|
|
|
|