親テーブルに子テーブルを持ち、親に複製を作成しない行があります。 documentationからPostgreSQL継承:子の行に親の行を挿入します
拡張例:
CREATE TABLE cities (
idcity serial PRIMARY KEY,
name text,
population float,
altitude int -- in feet
);
INSERT INTO cities VALUES (1, 'San Francisco', 7.24E+5, 63);
INSERT INTO cities VALUES (2, 'Las Vegas', 2.583E+5, 2174);
INSERT INTO cities VALUES (3, 'Mariposa', 1200, 1953);
INSERT INTO cities VALUES (4, 'Sacramento', 3.694E+5, 30);
-- The capitals table inherits from cities table.
CREATE TABLE capitals (
state char(2)
) INHERITS (cities);
のは、私だけの首都であるので、私は私のcapitals
テーブルにそれをしたいサクラメントを学んだとしましょう。 普通のINSERT INTO capitals
を使用すると、都市で重複した価値が得られますが、これはあまり有用ではありません。
INSERT INTO capitals VALUES (4, 'Sacramento', 3.694E+5, 30, 'CA');
SELECT * FROM cities WHERE idcity = 4;
idcity | name | population | altitude
-------+------------+------------+---------
4 | Sacramento | 369400 | 30
4 | Sacramento | 369400 | 30
(マニュアルに指定されているように、継承は主キーの重複する値を持つにつながると私はFROM ONLY
でそれを避けることができますが、それは私の問題ではないのです。)
私は私が持っている可能性が推測capitals
のトリガーで子を挿入すると親行が削除されますが、それを行うための組み込みの方法はありませんか?
いいえ、そこに継承ロジックが破られているためです。都市を首都にすることは、都市ではなくなることを意味しますか?しかし、あなたが本当にそれを達成する必要があるならば、引き金が行く方法です。 –
@AlexeySoshin私は反対を意味します:都市(名前、人口、高度...)であることについて何も変えずに都市を首都にしたいです。どうすればいい? – Victor
しかし、それはまったくトリガーなしであなたが今持っているものです。 –