Общие > Базы данных

on delete restrict

(1/3) > >>

Light_Sv:
Помогите , pls, разобраться с созданием foreign key
mySQL 4.0.22 .
читаю документацию и беру следующий пример :
CREATE TABLE product (category INT NOT NULL, id INT NOT NULL,
                      price DECIMAL,
                      PRIMARY KEY(category, id)) TYPE=INNODB;
CREATE TABLE customer (id INT NOT NULL,
                      PRIMARY KEY (id)) TYPE=INNODB;
CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,
                      product_category INT NOT NULL,
                      product_id INT NOT NULL,
                      customer_id INT NOT NULL,
                      PRIMARY KEY(no),
                      INDEX (product_category, product_id),
                      FOREIGN KEY (product_category, product_id)
                        REFERENCES product(category, id)
                        ON UPDATE CASCADE ON DELETE RESTRICT,
                      INDEX (customer_id),
                      FOREIGN KEY (customer_id)
                        REFERENCES customer(id)) TYPE=INNODB;

отрабатывает без ошибок, НО!

после этого запускаю show create table product_order и получаю
CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT,
                      product_category INT NOT NULL,
                      product_id INT NOT NULL,
                      customer_id INT NOT NULL,
                      PRIMARY KEY(no),
                      INDEX (product_category, product_id),
                      FOREIGN KEY (product_category, product_id)
                        REFERENCES product(category, id)
                        ON UPDATE CASCADE ,
                      INDEX (customer_id),
                      FOREIGN KEY (customer_id)
                        REFERENCES customer(id)) TYPE=INNODB;

т.е. on delete restrict - исчез.
а мне-то он как раз очень нужен. Если пишу  ON DELETE CASCADE - все прекрасно отрабатывает. Возможно проблема в настройках mySQL? Если кто сталкивался с такой проблемой - подскажите , что делать ?

Светлана.

commander:
Light_Sv
внешний ключ у тебя разрешает удаление? на примерах смотрел?

Макс:
AFAIK, restrict - это поведение по умолчанию, поэтому его необязательно писать

Phoinix:
Light_Sv

AFAIK - внешние ключи в MySQL 4.0 еще не работают, правда их можно описать

Макс:

--- Цитировать ---Phoinix:
 AFAIK - внешние ключи в MySQL 4.0 еще не работают,
--- Конец цитаты ---

в 4.0.22 точно работают (в текущем проекте использую)

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 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 
Перейти к полной версии