Postgresを使用しているのですが、以下を実行するとデータが2行入ってしまいます。
sql
1insert into per_samplesample values(1, 'あいうえお');
上記を実行してから以下を実行すると、同じ主キーのデータが2行あるようです。
sql
1select * from per_samplesample; 2-- -> 2件表示 3id | remark 41 | あいうえお 51 | あいうえお 6 7select * from per_samplesample_1; 8-- -> 1件表示 9id | remark 101 | あいうえお
なんでこうなるのでしょうか?
sql
1-- 関数 2CREATE OR REPLACE FUNCTION per_samplesample_trigger_func() 3RETURNS TRIGGER AS $$ 4BEGIN 5 IF ( NEW.id = 1) THEN 6 INSERT INTO per_samplesample_1 VALUES (NEW.*); 7 ELSIF ( NEW.id = 2) THEN 8 INSERT INTO per_samplesample_2 VALUES (NEW.*); 9 ELSIF ( NEW.id = 3) THEN 10 INSERT INTO per_samplesample_3 VALUES (NEW.*); 11 ELSE 12 RAISE EXCEPTION 'Data out of range. Fix the per_samplesample_trigger()'; 13END IF; 14RETURN NEW; 15END; 16$$ 17LANGUAGE plpgsql;] 18 19-- トリガー 20CREATE TRIGGER per_samplesample_trigger 21 BEFORE INSERT ON per_samplesample 22 FOR EACH ROW EXECUTE PROCEDURE per_samplesample_trigger_func(); 23 24 25-- テーブル 26CREATE TABLE per_samplesample ( 27 id int not null, 28 remark varchar(100), 29 PRIMARY KEY(id) 30); 31 32CREATE TABLE per_samplesample_1 ( 33 CHECK ( id = 1 ) 34) INHERITS (per_samplesample); 35CREATE TABLE per_samplesample_2 ( 36 CHECK ( id = 2 ) 37) INHERITS (per_samplesample); 38CREATE TABLE per_samplesample_3 ( 39 CHECK ( id = 3 ) 40) INHERITS (per_samplesample); 41
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。