Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / каскадное удаление не работает / 7 сообщений из 7, страница 1 из 1
31.10.2006, 12:43
    #34093825
autocommit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
каскадное удаление не работает
почему может не срабатывать каскадное удаление ? есть таблица с столбцами к которым привязаны вторичные ключи ON DELETE CASCADE. При удалении записи в связанных таблицах записи не удаляются и нет никакой ошибки. id-шники соответствуют.
...
Рейтинг: 0 / 0
31.10.2006, 13:41
    #34094062
Niemi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
каскадное удаление не работает
можно ли увидеть саму табличку CREATE TABE bla bla
ключики соответственно и как удаляете. какая ошибка выскакивает , если она имется.
...
Рейтинг: 0 / 0
31.10.2006, 14:14
    #34094239
autocommit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
каскадное удаление не работает
вот табличка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE "nextUrl"
(
  id int4 NOT NULL DEFAULT nextval('"nextUrl_id_seq"'::regclass),
  url varchar( 256 ),
  idurlstyle int4,
  free bool NOT NULL DEFAULT true,
  idurldataxml int4,
  CONSTRAINT xmldata_pkey PRIMARY KEY (id),
  CONSTRAINT "nextUrl_idurldataxml_fkey" FOREIGN KEY (idurldataxml)
      REFERENCES "nextUrlDataXML" (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT "nextUrl_idurlstyle_fkey" FOREIGN KEY (idurlstyle)
      REFERENCES "nextUrlStyle" (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE
) 
WITHOUT OIDS;
...
Рейтинг: 0 / 0
31.10.2006, 14:18
    #34094273
autocommit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
каскадное удаление не работает
удаляю так:
Код: plaintext
delete from "nextUrl" where "nextUrl".id = <значение id>;

ошибок не выскакивает
...
Рейтинг: 0 / 0
31.10.2006, 16:19
    #34094897
autocommit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
каскадное удаление не работает
поставил постгрю 8.0.8 (до этого пробовал на 8.1.4) сделал совсем простые таблички:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE TABLE test
(
  id serial NOT NULL,
  idtest2 int4,
  CONSTRAINT test_pkey PRIMARY KEY (id),
  CONSTRAINT test_idtest2_fkey FOREIGN KEY (idtest2)
      REFERENCES test2 (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE
) 
WITHOUT OIDS;
ALTER TABLE test OWNER TO postgres;
-- ***********************************
CREATE TABLE test2
(
  id serial NOT NULL,
  name char( 80 ),
  CONSTRAINT test2_pkey PRIMARY KEY (id)
) 
WITHOUT OIDS;
ALTER TABLE test2 OWNER TO postgres;

--- запросы
insert into test2 (name) values ('имя'); 
insert into test (idtest2) values ( 1 );
delete from test where id =  1 ;
select * from test2;
id |            name                                
----+------------------------
   1  | имя                                                                       
( 1  row)
что делаю не так ?
...
Рейтинг: 0 / 0
31.10.2006, 16:32
    #34094977
.gc
.gc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
каскадное удаление не работает
не оттуда удаляешь по недоразумению :)
Код: plaintext
CONSTRAINT test_idtest2_fkey FOREIGN KEY (idtest2)    REFERENCES test2 (id)  ON DELETE CASCADE
означает указание при удалении записей из таблицы test2 также удалить записи из таблицы test , которые ссылаются на них (test.idtest2=test2.id)
т.е.
Код: plaintext
delete from test2; select * from test;
...
Рейтинг: 0 / 0
31.10.2006, 16:40
    #34095021
autocommit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
каскадное удаление не работает
огромное спасибо !
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / каскадное удаление не работает / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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