Триггеры
ODBC
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Ветеран
- Сообщения: 333
- Зарегистрирован: 21 Сентябрь 2005, 11:05
- Откуда: Нижний Новгород
- Контактная информация:
Триггеры
Всем привет!
У меня в программе в некоторых файлах-связках есть дополнительные поля (даты и наименования) для сортировки Browse, информация берется из основных файлов, соответственно при ее редактировании в основном файле, нужно изменять в файл-связке. Пока делаю ручками, но вроде как должна быть возможность делать это автоматом на серваке, и вроде как для это можно использовать триггеры. Попробовал разобраться, получается только сразу во всем файле, а надо только для редактируемой записи.
Может кто сталкивался?
У меня в программе в некоторых файлах-связках есть дополнительные поля (даты и наименования) для сортировки Browse, информация берется из основных файлов, соответственно при ее редактировании в основном файле, нужно изменять в файл-связке. Пока делаю ручками, но вроде как должна быть возможность делать это автоматом на серваке, и вроде как для это можно использовать триггеры. Попробовал разобраться, получается только сразу во всем файле, а надо только для редактируемой записи.
Может кто сталкивался?
ru_alex
Дед Пахом
ru_alex
Дед Пахом
судя по переписке это MSSQLДед Пахом писал(а):есть 2 таблицы для триггеров - inserted и deleted (смотри Books Online).
declare @IdValue int
SELECT @IdValue=Id
FROM inserted
кажется так
а вот так не советую юзать inserted и deleted
т к в них может быть более одной записи и тады кирдык
в 90% случаев
надо декларировать курсоры и в цикле проходится по всем записям
это сделано для оптимизации (в ORACLE такого нет, триггера по одной записи), можно в зависимости от задачи и не декларировать курсоры, если имеют место быть групповые операции типа:
Код: Выделить всё
delete from dbo.W_CAL where
DATUMS in (select DATUMS from deleted)
Последний раз редактировалось Andrew™ 16 Январь 2006, 9:37, всего редактировалось 1 раз.
Andrew™
Дед Пахом
-
- Ветеран
- Сообщения: 333
- Зарегистрирован: 21 Сентябрь 2005, 11:05
- Откуда: Нижний Новгород
- Контактная информация:
Правильно ли я понял?
Чтобы найти те строки, в которых значение некой колонки изменилось, мне нужно сравнивать inserted table с основным файлом.
Для этого объявить курсор типа:
DECLARE MyCursor CURSOR FOR
SELECT MyFile.Name FROM MyFile INNER JOIN inserted ON MyFile.ID= inserted.ID
WHERE MyFile.Name <> inserted.Name
Или можно проще?
PS: Извиняюсь что не уточнил. Использую MSSQL.
Чтобы найти те строки, в которых значение некой колонки изменилось, мне нужно сравнивать inserted table с основным файлом.
Для этого объявить курсор типа:
DECLARE MyCursor CURSOR FOR
SELECT MyFile.Name FROM MyFile INNER JOIN inserted ON MyFile.ID= inserted.ID
WHERE MyFile.Name <> inserted.Name
Или можно проще?
PS: Извиняюсь что не уточнил. Использую MSSQL.
ru_alex
на входе есть inserted и deleted, по хорошему(правильному) поля первичного ключа никогда не меняются, тогда надо просто сравнитьru_alex писал(а):Правильно ли я понял?
Чтобы найти те строки, в которых значение некой колонки изменилось, мне нужно сравнивать inserted table с основным файлом.
Для этого объявить курсор типа:
DECLARE MyCursor CURSOR FOR
SELECT MyFile.Name FROM MyFile INNER JOIN inserted ON MyFile.ID= inserted.ID
WHERE MyFile.Name <> inserted.Name
Или можно проще?
соответсвующие поля в записях inserted и deleted по полям первичного ключа на предмет изменения требуемых полей, накладывать JOIN прямо на реальную таблицу нет необходимости
Код: Выделить всё
SELECT inserted.Name FROM inserted INNER JOIN deleted ON inserted.ID= deleted.ID
WHERE inserted.Name <> deleted.Name
Andrew™
ru_alex
Вернуться в «SQL, Oracle, ...»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)