私はPostgres 9.5.0を使用しています。私は次のテーブルを持っていますPostgresでは、テーブルAの行が削除されたときにテーブルBから行を削除する方法はありますか?
myproject=> \d my_objects;
Table "public.my_objects"
Column | Type | Modifiers
---------------------+-----------------------------+-------------------------------------
name | character varying |
day | date |
distance | double precision |
user_id | integer |
created_at | timestamp without time zone | not null
updated_at | timestamp without time zone | not null
distance_unit_id | integer |
import_completed | boolean |
id | character varying | not null default uuid_generate_v4()
linked_my_object_time_id | character varying |
web_crawler_id | integer |
address_id | character varying |
Indexes:
"my_objects_pkey" PRIMARY KEY, btree (id)
"index_my_objects_on_user_id_and_day_and_name" UNIQUE, btree (user_id, day, name)
"index_my_objects_on_user_id" btree (user_id)
"index_my_objects_on_web_crawler_id" btree (web_crawler_id)
Foreign-key constraints:
"fk_rails_5287d445c0" FOREIGN KEY (address_id) REFERENCES addresses(id) ON DELETE CASCADE
"fk_rails_970b2325bf" FOREIGN KEY (distance_unit_id) REFERENCES distance_units(id)
"fk_rails_dda3297b57" FOREIGN KEY (linked_my_object_time_id) REFERENCES my_object_times(id) ON DELETE CASCADE
"fk_rails_ebd32625bc" FOREIGN KEY (web_crawler_id) REFERENCES web_crawlers(id)
"fk_rails_fa07601dff" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
今、各my_objectにはアドレスフィールドがあります。私が望むのは、my_objectを削除すると、対応するアドレスエントリも削除されます。 my_objectsテーブルからaddress_idカラムを移動することなく、my_objectsテーブルからローを削除するときに対応するアドレスデータも削除されるように設定することは可能ですか?明らかに、私が設定した外来キーは、仕事を完了させません。
? – redneb
同じ 'adresses'エントリを参照する複数の' my_objects'エントリがある場合はどうなりますか? –
アドレスごとに1つのmy_objectがあります。 my_objectsテーブルにアドレスを含めることにしますが、アドレス(ユーザー、イベントなど)を使用するオブジェクトの種類がありますので、すべてのアドレスが1つの場所にある場合は少しきれいに見えます。 – Dave