ORACLE 問題 ... (3)

  以下のテーブル定義を前提に以降の問題に答えて下さい



  
create table コード名称 (
種別 NUMBER(4)
,コード VARCHAR(10)
,名称 VARCHAR2(40)
,primary key (種別,コード)
)

create table 学生マスタ (
年度 NUMBER(4),
学生番号 NUMBER(6),
氏名 VARCHAR2(40),
性別 VARCHAR2(1) constraint 学生マスタ_性別 check(性別 in('1','2') or 性別 is null),
年齢 NUMBER(2,0),
登録日 DATE,
更新日 DATE,
primary key(年度,学生番号)
)

create table 科目マスタ (
年度 NUMBER(4)
,科目コード NUMBER(6)
,科目名 VARCHAR2(40)
,primary key (年度,科目コード)
)

create table 科目テーブル (
年度 NUMBER(4)
,科目コード NUMBER(6)
,学生番号 NUMBER(6)
,primary key (年度,科目コード,学生番号)
,constraint 科目テーブル_学生参照 foreign key (年度,学生番号) references 学生マスタ(年度,学生番号)
,constraint 科目テーブル_科目参照 foreign key (年度,科目コード) references 科目マスタ(年度,科目コード)
)

  



  (1) ... 以下の空白を入力して下さい



削除できないテーブルは です






  (2) ... 以下の空白を入力して下さい

科目マスタ
年度 科目コード 科目名
2003 1000 SQL

科目テーブル
年度 科目コード 学生番号
2003 1000 10001
2003 1000 10002

科目コード 1000 を削除にするために、科目テーブルの制約を無効にしたいと思います。
SQL文を完成させて下さい
alter table






  (3) ... 以下の空白を入力して下さい

学生マスタ
年度 学生番号 氏名 性別 年齢 登録日 更新日
2003 10001 山田 太郎 1 20 2003/07/16 20:26:54 2003/07/16 20:26:54
2003 10002 中島 良子 2 18 2003/07/16 20:27:19 2003/07/16 20:27:19

科目テーブル
年度 科目コード 学生番号
2003 1000 10001
2003 1000 10002

学生レコードを削除した時に、自動的に科目テーブルの該当学生レコードを
削除するようににしたいと思います。
制約自体の変更はできないので、まず制約を削除します
alter table 科目テーブル

次に目的の制約を再び同じ制約名で追加します。

alter table 科目テーブル
foreign key (年度,学生番号) references 学生マスタ(年度,学生番号)


※ 親表のレコードを削除した時に自動的に子表のレコードのキーにNULL をセットするのは
「ON DELETE SET NULL」






  (4) ... 以下の空白を入力して下さい

科目マスタの primary key 制約を無効にしようと思いますが、科目データの foreign key 制約
が依存しているので無効にできません。そこで、科目データの foreign key 制約も同時に無効に
しようと思います

alter table 科目マスタ primary key






  (5) ... 以下の空白を入力して下さい

無効化した制約の状態を確認するディクショナリビューは

制約の列の順序を確認するディクショナリビューは






  (6) ... foreign key 制約を作成する前に参照される親表に必要な制約は何か?

制約
制約













  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ