Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
iap
Ну так сделайте уже триггер INSTEAD OF UPDATE!
Уже столько времени прошло!


К сожалению, видимо моей квалификации недостаточно что бы понять как можно "INSTEAD OF UPDATE" применить в данном случае.
9 дек 14, 12:08    [16971133]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
iap
Member

Откуда: Москва
Сообщений: 47197
tiproktikum
Владислав Колосов
tiproktikum,

тогда остается instead of триггер.


По-моему это не решение, я же не могу заменить Update который делает программа, я его ведь даже не знаю.
Если я правильно понял, то instead of update отменяет исходный запрос в любом случае, а далее я делаю что хочу: либо пишу заново этот Update либо ничего не делаю
Мне кажется, Вам не надо вообще что-нибудь трогать...
Пусть работает как работает
9 дек 14, 12:08    [16971142]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
Glory
tiproktikum
По-моему это не решение, я же не могу заменить Update который делает программа, я его ведь даже не знаю.

Вам и не нужно его знать.
Вы же напишите свой update
tiproktikum
Если я правильно понял, то instead of update отменяет исходный запрос в любом случае, а далее я делаю что хочу: либо пишу заново этот Update либо ничего не делаю

именно


А как написать что "если таки состояние заказа меньше 10, то все таки надо выполнить тот Update который мы отменили"?
9 дек 14, 12:09    [16971149]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
Glory
Member

Откуда:
Сообщений: 104751
tiproktikum
А как написать что "если таки состояние заказа меньше 10, то все таки надо выполнить тот Update который мы отменили"?

Господи
Вы спрашиваете, как узнать, есть ли в таблице записи, где поле "состояние заказа" = 10 ?
9 дек 14, 12:12    [16971168]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
Glory
tiproktikum
А как написать что "если таки состояние заказа меньше 10, то все таки надо выполнить тот Update который мы отменили"?

Господи
Вы спрашиваете, как узнать, есть ли в таблице записи, где поле "состояние заказа" = 10 ?


Нет, я спрашиваю как по результату условия выполнить запрос, который отменяет INSTEAD OF UPDATE и который мы не знаем (его программа выполняет).
9 дек 14, 12:14    [16971181]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
Glory
Member

Откуда:
Сообщений: 104751
tiproktikum
Нет, я спрашиваю как по результату условия выполнить запрос, который отменяет INSTEAD OF UPDATE и который мы не знаем (его программа выполняет).

Мда. Да не нужно вам знать текст оригинальной команды
Вы напишите свою команду
UPDATE .... WHERE <здесь условия, которые выберут только правильные Заказы и отфильтруют неправильные>
9 дек 14, 12:18    [16971222]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
iiyama
Member

Откуда:
Сообщений: 642
tiproktikum,

тынц
внимание на таблицу inserted

PS. Но лучше не трогать
PPS. Сделайте бэкап
9 дек 14, 12:18    [16971226]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
Glory
tiproktikum
Нет, я спрашиваю как по результату условия выполнить запрос, который отменяет INSTEAD OF UPDATE и который мы не знаем (его программа выполняет).

Мда. Да не нужно вам знать текст оригинальной команды
Вы напишите свою команду
UPDATE .... WHERE <здесь условия, которые выберут только правильные Заказы и отфильтруют неправильные>


Видимо, я что то не так объясняю...

UPDATE .... WHERE я написать, к сожалению, не могу, т.к. что там надо Updat-ить я не в курсе, это программа делает.
Моя задача в результате условия сделать одно из двух
1) Отменить Update который делает программа
2) Выполнить Update как есть, но я его не знаю
9 дек 14, 12:25    [16971269]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
Glory
Member

Откуда:
Сообщений: 104751
tiproktikum
UPDATE .... WHERE я написать, к сожалению, не могу, т.к. что там надо Updat-ить я не в курсе, это программа делает.

Вашу мать
Еще раз - не нужно вам знать текст оригинального Update
Сколько раз это еще нужно повторить ?
9 дек 14, 12:27    [16971289]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
iap
Member

Откуда: Москва
Сообщений: 47197
tiproktikum
Glory
пропущено...

Мда. Да не нужно вам знать текст оригинальной команды
Вы напишите свою команду
UPDATE .... WHERE <здесь условия, которые выберут только правильные Заказы и отфильтруют неправильные>


Видимо, я что то не так объясняю...

UPDATE .... WHERE я написать, к сожалению, не могу, т.к. что там надо Updat-ить я не в курсе, это программа делает.
Моя задача в результате условия сделать одно из двух
1) Отменить Update который делает программа
2) Выполнить Update как есть, но я его не знаю
Вы в состоянии сравнивать поля inserted и deleted?
Если они отличаются, значит поле хотят проапдейтить. Логично?
Связывайте deleted и inserted по уникальным полям.
Может, для Вас будет сюрпризом, что одним UPDATEом можно менять много-много строк.
9 дек 14, 12:30    [16971312]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
Что-то господа вы злы) Почему никто не спросил про версию сервера, может дальше завяжется более конструктивный диалог.
9 дек 14, 12:38    [16971406]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
ambarka_max
Что-то господа вы злы) Почему никто не спросил про версию сервера, может дальше завяжется более конструктивный диалог.


Я понял одно: я задачу объяснил не так. Решения которые предлагают - на другую тему.
9 дек 14, 12:42    [16971439]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
Glory
Member

Откуда:
Сообщений: 104751
tiproktikum
Я понял одно: я задачу объяснил не так.

Да вы просто не умеете писать запросы, в которых используется больше одной таблицы
9 дек 14, 12:44    [16971455]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
Glory
tiproktikum
Я понял одно: я задачу объяснил не так.

Да вы просто не умеете писать запросы, в которых используется больше одной таблицы


Началось....)
9 дек 14, 12:45    [16971464]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
Glory
Member

Откуда:
Сообщений: 104751
tiproktikum
Glory
пропущено...

Да вы просто не умеете писать запросы, в которых используется больше одной таблицы


Началось....)

А что умеете ?
Тогда в чем проблема написать в триггере нужный update ?
9 дек 14, 12:48    [16971476]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
Glory
tiproktikum
пропущено...


Началось....)

А что умеете ?
Тогда в чем проблема написать в триггере нужный update ?


Ну вот пытаюсь объяснить что мне не нужен же Update, мне наоборот нужно что бы программа ничего не делала в этом случае, вообще ничего, ни сообщений не выдавала, ни Update-ов не делала. просто вышла и все. А вот вторая ситуация - просто сделала тот самый update который и хотела, и тут Вы правы - я действительно не знаю как это написать, маленький кусок кода для примера мне не помешал бы.
9 дек 14, 12:50    [16971496]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
Glory
Member

Откуда:
Сообщений: 104751
tiproktikum
Ну вот пытаюсь объяснить что мне не нужен же Update, мне наоборот нужно что бы программа ничего не делала в этом случае, вообще ничего, ни сообщений не выдавала, ни Update-ов не делала.

Тяжелый случай
И что мешает написать в триггере проверочный запрос перед "ничего не делала" ?

tiproktikum
А вот вторая ситуация - просто сделала тот самый update который и хотела, и тут Вы правы - я действительно не знаю как это написать, маленький кусок кода для примера мне не помешал бы.

http://www.firststeps.ru/sql/r.php?8
9 дек 14, 12:53    [16971515]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
Glory
tiproktikum
Ну вот пытаюсь объяснить что мне не нужен же Update, мне наоборот нужно что бы программа ничего не делала в этом случае, вообще ничего, ни сообщений не выдавала, ни Update-ов не делала.

Тяжелый случай
И что мешает написать в триггере проверочный запрос перед "ничего не делала" ?

tiproktikum
А вот вторая ситуация - просто сделала тот самый update который и хотела, и тут Вы правы - я действительно не знаю как это написать, маленький кусок кода для примера мне не помешал бы.

http://www.firststeps.ru/sql/r.php?8


Мне даже уже интересно смогу ли я вообще объяснить что мне нужно. )

С первой частью понятно (там где триггер ничего не должен делать), а со второй - нет. Я прошу прислать кусок кода, который выполнит Update, Вы мне в ответ присылаете ссылку на первые шаги: составление запросов к двум и более запросам.
9 дек 14, 13:00    [16971566]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
tiproktikum
к двум и более запросам.


*таблицам
9 дек 14, 13:01    [16971572]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
Glory
Member

Откуда:
Сообщений: 104751
tiproktikum
Я прошу прислать кусок кода, который выполнит Update, Вы мне в ответ присылаете ссылку на первые шаги: составление запросов к двум и более запросам.

так вы вообще не умеете писать запросы с несколькими таблицам
Потому что update от select отличается всего лишь парой опций.
Не говоря уж о том, что в хелпе по UPDATE тоже есть примеры. Вы читали в хелпе статью про UPDATE ?
9 дек 14, 13:03    [16971587]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
iiyama
Member

Откуда:
Сообщений: 642
tiproktikum,
Извините, но я сделаю Вам плохо и "помогу", надеюсь это не отобразится на моей карме

CREATE TRIGGER MyTrigger ON  MyTable INSTEAD OF UPDATE
AS BEGIN 
SET NOCOUNT ON; 
UPDATE MyTable 
	SET MyField1 = i.MyField1,..., MyFieldN = i.MyFieldN 
FROM MyTable M join inserted i  ON M.[Мой_ПК]=i.[Мой_ПК] 
WHERE i.[Мой TaskState]<10 
END

Писал налету, не проверял, но общий смысл понятен,
1) Сделайте бэкап
2) Когда напишете свой UPDATE, напишите сначала для него SELECT
3) Потренируйте сначала на "котиках", т.е на своих тестовых таблицах и данных
9 дек 14, 13:05    [16971599]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
tiproktikum,

update можно условно разбить на удаление и вставку. Первая часть находится в deleted таблице, вторая - в inserted.
Напишите запрос так, чтобы он обновлял все поля в целевой таблице по ключу, значения которого находятся в inserted таблице значениями полей, которые также находятся в inserted.
Сделайте в триггере return, если требуемое Вами условие не выполняется, проверку выполняйте до обновления целевой таблицы.
9 дек 14, 13:09    [16971625]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
Glory
tiproktikum
Я прошу прислать кусок кода, который выполнит Update, Вы мне в ответ присылаете ссылку на первые шаги: составление запросов к двум и более запросам.

так вы вообще не умеете писать запросы с несколькими таблицам
Потому что update от select отличается всего лишь парой опций.
Не говоря уж о том, что в хелпе по UPDATE тоже есть примеры. Вы читали в хелпе статью про UPDATE ?


Навряд ли, Вы поверите, но я свободно владею языком SQL.
Я вот пытаюсь понять принцип работы триггера INSTEAD OF, затем и пришел на форум. Я правильно понял Вы предлагаете в таблицах inserted и deleted понять как должен был пройти update и выполнить его в триггере?
9 дек 14, 13:12    [16971645]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
tiproktikum
Member

Откуда:
Сообщений: 61
iiyama
tiproktikum,
Извините, но я сделаю Вам плохо и "помогу", надеюсь это не отобразится на моей карме

CREATE TRIGGER MyTrigger ON  MyTable INSTEAD OF UPDATE
AS BEGIN 
SET NOCOUNT ON; 
UPDATE MyTable 
	SET MyField1 = i.MyField1,..., MyFieldN = i.MyFieldN 
FROM MyTable M join inserted i  ON M.[Мой_ПК]=i.[Мой_ПК] 
WHERE i.[Мой TaskState]<10 
END

Писал налету, не проверял, но общий смысл понятен,
1) Сделайте бэкап
2) Когда напишете свой UPDATE, напишите сначала для него SELECT
3) Потренируйте сначала на "котиках", т.е на своих тестовых таблицах и данных


Вот, то что нужно! Принцип понял, спасибо, буду пробовать.
9 дек 14, 13:14    [16971667]     Ответить | Цитировать Сообщить модератору
 Re: Rollback  [new]
Glory
Member

Откуда:
Сообщений: 104751
tiproktikum
Навряд ли, Вы поверите, но я свободно владею языком SQL.

А я - принц Датский
tiproktikum
Я вот пытаюсь понять принцип работы триггера INSTEAD OF, затем и пришел на форум.

Любой триггер - это процедура, которая автоматически вызывается сервером при возникновении какого-то события
Все остальные "особенности" триггера являет собой тот код, который вы поместите в тело триггера
А так как вы не можете написать простейший код из проверки и update, то и тупите
9 дек 14, 13:16    [16971695]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить