【問題】
”学生”表が次のSQL文で定義されているとき、検査制約の違反となるSQL文はどれか。
CREATE TABLE 学生(
学生番号 CHAR(5) PRIMARY KEY,
学生名 CHAR(16),
学部コード CHAR(4),
住所 CHAR(16),
CHECK(学生番号 LIKE ‘K%’))
ア.DELETE FROM 学生 WHERE 学生番号 = ‘K1002’
イ.INSERT INTO 学生 VALUES(‘j2002′,’渡辺次郎’,’M006′,’東京都’)
ウ.SELECT * FROM 学生 WHERE 学生番号 = ‘K1001’
エ.UPDATE 学生 SET 学部コード = ‘N001’ WHERE 学生番号 LIKE ‘K%’
【解答】
検査制約の違反となるSQLは、学生番号が’K%’となっている。%とは任意の数字を表すから、K%とは、K1001とかK1002になっているものをいう。
そして、検査のタイミングは、データの更新のタイミング、すなわちINSERTかUPDATEの時のみとなるから、アとウは不適切となる。
イは、学生番号にj2002を入れようとしており、K%ではないから、検査違反となる。よって解答はイとなる。
なお、エは、学部コードを更新するだけで学生番号とは関係ないから、不適切となる。