Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Triggers / 8 сообщений из 8, страница 1 из 1
07.07.2002, 21:47:00
    #32035470
Strannik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triggers
Недавно столкнулся с проблемой, которая осложняет написание скрипта: хочется чтобы создание триггера было условным, то есть типа:

if @Condition
CREATE TRIGGER trMain ON Main
FOR INSERT
AS
<body>

Но MSSQL ругается на такую конструкцию и хочет чтобы перед CREATE TRIGGER обязательно стояло GO. Если кто-то знает, помогите справиться с проблемой...
...
Рейтинг: 0 / 0
07.07.2002, 23:42:40
    #32035471
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triggers
Тут уже один чел подсказывал:
sp_executesql(...)
...
Рейтинг: 0 / 0
08.07.2002, 00:08:16
    #32035472
Robert Djabarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triggers
Seaparate the script that contains CREATE TRIGGER into a separate script file (MyTrigger.SQL) and invoke it with xp_cmdshell if the @Condition is TRUE, e.g.:

If @Condition
exec master.dbo.xp_cmdshell 'osql -S MyServer -d MyDatabase -E -i "MyTrigger.SQL"'

Hope it helps.
...
Рейтинг: 0 / 0
08.07.2002, 00:25:22
    #32035473
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triggers
Re:Robert Djabaro
If I can write in english as you, I'l be in Canberra.
Поставьте, наконец, поддержку русского на свой лаптоп. Если не хватает места, то можно удалить игры, или всю директорию HELP.

Рад появлению высококвалифицированного участника форума.
...
Рейтинг: 0 / 0
08.07.2002, 00:39:29
    #32035475
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triggers
2Cat2
1) Помнишь похожий вопрос девушки?
Я ответил (последним) точно так же, как сейчас Robert.
2) Тоже очень рад.

P.S. Ё-моё. Выходные прошли, а ни хрена не сделал, что надо было сделать. Как это на меня похоже.
...
Рейтинг: 0 / 0
08.07.2002, 00:49:28
    #32035476
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triggers
sp_executesql
sp_executesql is a system stored procedure that you can use in place of "exec" to execute your dynamic sql.
This allows you to have parameters in your dynamic query and pass them in. The end result is that SQL Server will try to cache the execution plan for your query giving you some of the advantages of a fully compiled query.

An example

Declare @SQL nVarChar(1000) --N.B. string must be unicode for sp_executesql
SELECT @SQL = 'SELECT * FROM pubs.DBO.Authors WHERE au_lname = @AuthorName'

Exec sp_executesql @SQL, N'@AuthorName nVarChar(50)', @AuthorName = 'white'
The first parameter here is the SQL statement, then you must declare the parameters, after that you pass the in parameters as normal, comma separated.

sp_executesql is also useful when you want to execute code in another database as it will run code in the context of it's database, rather than the one it was called from.

Try this from a database that is not Pubs

Create View pubs.dbo.Auths AS (SELECT au_id, au_lname, au_fname FROM Authors)
You will get this error: 'CREATE VIEW' does not allow specifying the database name as a prefix to the object name.

So you build the dynamic sql, then run it in Pub's copy of sp_executesql

I.E.

Declare @SQL nVarChar(1000)

Select @SQL = 'Create View Auths AS (SELECT au_id, au_lname, au_fname FROM Authors)'

Execute pubs.dbo.sp_executesql @sql
...
Рейтинг: 0 / 0
08.07.2002, 01:13:12
    #32035477
RatTail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triggers
Пардон, забыл указать автора, приведённого мною текста:
мусьё Merkin (www.sqlteam.com).
...
Рейтинг: 0 / 0
08.07.2002, 09:02:18
    #32035490
Strannik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Triggers
Спасибо большое всем. exec и sp_executesql то что нужно.
Правда мне все равно не понятно почему Microsoft разработала именно такой синтаксис SQL (по поводу CREATE TRIGGER)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Triggers / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]