Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / помогите пожалуйста вще неопытному / 5 сообщений из 5, страница 1 из 1
13.10.2005, 12:10
    #33322173
yourij_mw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите пожалуйста вще неопытному
Здраствуйте.
У меня во какая проблема или ворос: я знаю што скажем в IB, ASA есть триггеры до выполнения и после. мне бы подошёл триггер before delete штобы удалять подчинённые записи в зависимых таблицах для которых определён foreign key на данную таблицу. Но в ASE кажется такого сделать нельзя (ИЛИ ВСЁТАКИ МОЖНА????)
Вопрос в этом и состоит :всётаки возможно как-то реализовать задуманное в ASE триггером без удаления констрейна форин кей или незя(и если извесно што незя то извесно ли почему незя ведь вроде ASE не из последних из лудших и то всё...)
ну и ещё даже если отбросить такое то следуещий триггер ASE не хочет принять
для главной таблицы Main
delete subord
from subord, deleted
where subord.id_m in deleted.id_m

пишет --- incorrect syntax near 'deleted'
как же надо писать штоб оно работало? обязательно использовать курсоры?
помогите плиз
Спасибо за внимание и заранее спасибо за помощь
...
Рейтинг: 0 / 0
13.10.2005, 13:26
    #33322506
iLLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите пожалуйста вще неопытному
Во-первых, для FK можно объявить, чтоб он сам удалял(изменял) зависимые записи в других таблицах. По крайней мере для АСА так.
Во-вторых, замени "in" на "="
...
Рейтинг: 0 / 0
13.10.2005, 22:06
    #33323851
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите пожалуйста вще неопытному
yourij_mwbefore delete штобы удалять подчинённые записи в зависимых таблицах для которых определён foreign key на данную таблицу. Но в ASE кажется такого сделать нельзя (ИЛИ ВСЁТАКИ МОЖНА????)

Триггер BEFORE сделать нельзя - в ASE только AFTER ALL ROWS.

Каскадное удаление надо делать одним из нижеприведенных способов:
не делать FOREIGN KEY, и каскадное удаление и проверки целостности реализовывать триггерами.

реализовывать всю работу с таблицей через хранимые процедуры и там делать все (при этом FOREIGN KEY также можно делать).

Это не раз обсасывалось во всяких FAQ, стандартный вопрос.

Код: plaintext
1.
2.
3.
4.
delete subord 
from subord, deleted 
where subord.id_m in deleted.id_m [/b]
-- пишет incorrect syntax near 'deleted'

У, да вы, батенька, SQL не знаете. Писать надо так:
Код: plaintext
1.
2.
delete subord 
where subord.id_m in (select deleted.id_m from deleted)

Или вот так, используя расширения TSQL :

Код: plaintext
1.
2.
3.
delete subord 
from subord
join deleted on subord.id_m = deleted.id_m 
...
Рейтинг: 0 / 0
13.10.2005, 22:07
    #33323852
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите пожалуйста вще неопытному
iLLerВо-первых, для FK можно объявить, чтоб он сам удалял(изменял) зависимые записи в других таблицах. По крайней мере для АСА так.


Только не в ASE. Хотя , в 15 -ой что -- я не знаю. Может добавили.
...
Рейтинг: 0 / 0
14.10.2005, 10:11
    #33324203
yourij_mw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите пожалуйста вще неопытному
Спасибо за помщь и внимание к моему непониманию
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / помогите пожалуйста вще неопытному / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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