2017-09-07 16 views
1

DELETE FROM users WHERE id='some_id'を実行すると、beta_keysテーブルのレコードは削除されません。外部キー削除カスケードの制約が動作しないpostgres

beta_keysテーブル:

CREATE TABLE beta_keys (
    id serial PRIMARY KEY, 
    key VARCHAR(60) UNIQUE NOT NULL, 
    created_at TIMESTAMP NOT NULL, 
    updated_at TIMESTAMP 
); 

ユーザーテーブル:

CREATE TABLE users (
    id serial PRIMARY KEY, 
    email VARCHAR (256) UNIQUE NOT NULL, 
    password VARCHAR (60) NOT NULL, 
    beta_key_id INTEGER, 
    created_at TIMESTAMP NOT NULL, 
    updated_at TIMESTAMP, 
    CONSTRAINT users_beta_key_id_fkey FOREIGN KEY (beta_key_id) 
     REFERENCES beta_keys (id) MATCH SIMPLE 
     ON DELETE CASCADE 
); 
+2

あなたはそれを後方に持っています。 'beta_keys'行が削除されると、ユーザーは削除されます。 – SqlZim

答えて

2

users参照beta_keysdelete cascadeは、参照行(beta_keys)が削除されたときに参照行(users)を削除することによって機能します。

sqlfiddle:http://sqlfiddle.com/#!17/a7495/1

関連する問題