2

カスケードするために削除を取得しようとしましたが、機能していないようです。私は明らかな何かを見逃していると確信しています、誰かが私がそれを見つけるのを手伝ってくれるでしょうか?

'articles'テーブルを削除すると、'article_section_lt'テーブルの対応する行が削除されると思います。

CREATE TABLE articles (
    id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    url_stub VARCHAR(255) NOT NULL UNIQUE,
    h1 VARCHAR(60) NOT NULL UNIQUE,
    title VARCHAR(60) NOT NULL,
    description VARCHAR(150) NOT NULL,
    summary VARCHAR(150) NOT NULL DEFAULT "",
    html_content TEXT,
    date DATE NOT NULL,
    updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)ENGINE=INNODB;


CREATE TABLE article_sections (
    /* blog, news etc */
    id INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    url_stub VARCHAR(255) NOT NULL UNIQUE,
    h1 VARCHAR(60) NOT NULL,
    title VARCHAR(60) NOT NULL,
    description VARCHAR(150) NOT NULL,
    summary VARCHAR(150) NOT NULL DEFAULT "",
    html_content TEXT NOT NULL DEFAULT ""
)ENGINE=INNODB;

CREATE TABLE article_section_lt (
    fk_article_id INTEGER UNSIGNED NOT NULL REFERENCES articles(id) ON DELETE CASCADE,
    fk_article_section_id INTEGER UNSIGNED NOT NULL
)ENGINE=INNODB;
4

1 に答える 1

3

外部キー制約を明示的に宣言する必要があります。列定義のREFERENCES句が機能しません。

これを試して:

CREATE TABLE article_section_lt (
    fk_article_id INTEGER UNSIGNED NOT NULL,
    fk_article_section_id INTEGER UNSIGNED NOT NULL,
    KEY fk_article_id (fk_article_id),
    CONSTRAINT fk_article_section_lt_to_article FOREIGN KEY (fk_article_id) REFERENCES articles(id) ON DELETE CASCADE
)ENGINE=INNODB;
于 2010-04-13T23:57:17.257 に答える