1

共通のIDを別のテーブルと共有し、最初から削除されると両方のテーブルでどの行が削除されるかを作成するにはどうすればよいですか?

FOREIGN KEY、REFERENCESについて聞いたが、実際にそのようなテーブルを作成する方法がわからない。私を始めるための例はありますか?

4

1 に答える 1

2

私はあなたがカスケード削除について話しているか、あなたがしてはいけない本当に奇妙なことについて話していると思います。:)

外部キーに関する情報:http ://www.postgresql.org/docs/8.3/static/tutorial-fk.html

カスケード削除に関する情報(「ONDELETECASCADE」のページを検索してください):http ://www.postgresql.org/docs/8.2/static/ddl-constraints.html

編集:例を追加:

テーブルの作成:

CREATE TABLE products (
    product_no integer PRIMARY KEY,
    name text,
    price numeric
);

CREATE TABLE orders (
    order_id integer PRIMARY KEY,
    shipping_address text,
    ...
);

CREATE TABLE order_items (
    product_no integer REFERENCES products ON DELETE RESTRICT,
    order_id integer REFERENCES orders ON DELETE CASCADE,
    quantity integer,
    PRIMARY KEY (product_no, order_id)
);

カスケード削除をトリガーする例:

DELETE FROM orders                  -- This will delete all orders with 
WHERE order_id BETWEEN 1 AND 10 ;   -- order_id between 1 and 10 and 
                                    -- all associated order items.
于 2013-01-04T16:50:22.117 に答える