5章−1

(1) 実行結果を参考に次のようなSQLを作成しなさい。制約などは適切に付加すること。
・得意先を管理するテーブルclientを作成し、行を追加する。
・担当者を管理するテーブルstaffを作成し、行を追加する。ただし次の条件を満たすこと。
	1. c_id列はclientテーブルのid列と同じデータを意味し、そこに存在する値以外は拒否する。
・得意先と担当者を表示するビューclient_vを作成する。

odexer=> \i 05_1_1.sql
psql:05_1_1.sql:9: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "client_pkey" for table "client"
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
psql:05_1_1.sql:19: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "staff_pkey" for table "staff"
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
CREATE VIEW

odexer=> select * from client;
 id | name |     tel
----+------+--------------
  1 | SUN  | 0120-99-0001
  2 | IBM  | 0120-99-0002
  3 | NEC  | 0120-99-0003
(3 rows)

odexer=> select * from staff;
 id | name |   tel   | c_id
----+------+---------+------
  1 | 田中 | 11-0001 |    2
  2 | 鈴木 | 11-0002 |    3
  3 | 山田 | 11-0003 |    1
(3 rows)

odexer=> select * from staff_v;
 担当者 | 担当者tel | 得意先 |  得意先tel
--------+-----------+--------+--------------
 田中   | 11-0001   | IBM    | 0120-99-0002
 鈴木   | 11-0002   | NEC    | 0120-99-0003
 山田   | 11-0003   | SUN    | 0120-99-0001
(3 rows)


(2) 実行結果を参考に次のようなSQLを作成しなさい。
・staffテーブルが条件1.を満たしているか確認する。

odexer=> \i 05_1_2.sql

psql:05_1_2.sql:1: ERROR:  insert or update on table "staff" violates foreign key constraint "staff_c_id_fkey"
DETAIL:  Key (c_id)=(4) is not present in table "client".