powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Triggers
8 сообщений из 8, страница 1 из 1
Triggers
    #32035470
Strannik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно столкнулся с проблемой, которая осложняет написание скрипта: хочется чтобы создание триггера было условным, то есть типа:

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

Но MSSQL ругается на такую конструкцию и хочет чтобы перед CREATE TRIGGER обязательно стояло GO. Если кто-то знает, помогите справиться с проблемой...
...
Рейтинг: 0 / 0
Triggers
    #32035471
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут уже один чел подсказывал:
sp_executesql(...)
...
Рейтинг: 0 / 0
Triggers
    #32035472
Robert Djabarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Triggers
    #32035473
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Re:Robert Djabaro
If I can write in english as you, I'l be in Canberra.
Поставьте, наконец, поддержку русского на свой лаптоп. Если не хватает места, то можно удалить игры, или всю директорию HELP.

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

P.S. Ё-моё. Выходные прошли, а ни хрена не сделал, что надо было сделать. Как это на меня похоже.
...
Рейтинг: 0 / 0
Triggers
    #32035476
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Triggers
    #32035477
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, забыл указать автора, приведённого мною текста:
мусьё Merkin (www.sqlteam.com).
...
Рейтинг: 0 / 0
Triggers
    #32035490
Strannik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое всем. exec и sp_executesql то что нужно.
Правда мне все равно не понятно почему Microsoft разработала именно такой синтаксис SQL (по поводу CREATE TRIGGER)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Triggers
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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