powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ограничения вместо триггеров
5 сообщений из 5, страница 1 из 1
ограничения вместо триггеров
    #32904852
D.mon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раньше работал на psql версии 7.2.1
Там при создании таблицы, например так:
create table ...(
...
client_id int2 not null references client(id),
...
);
автоматически создавался триггер, который поддерживал целостность.
соответственно в описании таблицы (которое \d table)
Выводились строки типа
"RI_ConstraintTrigger_8685160" AFTER INSERT OR UPDATE ON voip_rekv FROM clients NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE PROCEDURE "RI_FKey_check_ins"('<unnamed>', 'voip_rekv', 'clients', 'UNSPECIFIED', 'client_id', 'id')

Сейчас перешел на 7.4.6, и при создании таблиц таким же кодом, создаются просто внешние ограничения, и в описании таблицы выводится такие строки:
"$1" FOREIGN KEY (client_id) REFERENCES clients(id)

Можно ли настроить Postgres, чтобы он работал как раньше?
Причина: при старом варианте спокойно работало truncate, если целостность не нарушается. а при новом варианте truncate пишет ошибку, типа на эту таблицу ссылаются, поэтому truncate не разрешен. Хотя ссылающаяся таблица пустая!

Помогите, плиз!!
...
Рейтинг: 0 / 0
ограничения вместо триггеров
    #32907630
strizh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а truncate cascade (по аналогии с drop ... cascade) не пробовал ?
...
Рейтинг: 0 / 0
ограничения вместо триггеров
    #32909356
Ага, я уже разобрался.
просто truncate не работает в таблицах, где есть внешние ключи. Так что буду удалять строки командой delete * from <table>
Скорость в данном случае для меня не важна
...
Рейтинг: 0 / 0
ограничения вместо триггеров
    #32909357
D.mon - Это я (зарегистрировался)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ограничения вместо триггеров
    #34450596
v0v4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скрябин ДмитрийАга, я уже разобрался.
просто truncate не работает в таблицах, где есть внешние ключи. Так что буду удалять строки командой delete * from <table>
Скорость в данном случае для меня не важна

Работает. Просто надо делать truncate общий:

TRUNCATE TABLE table1,
table2,
........,
tableN;
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / ограничения вместо триггеров
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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