HOME»データベーススペシャリスト掲示板»H30午後T問2 設2 NO ACTIONについて

データベーススペシャリスト掲示板

掲示板検索:

[0258]H30午後T問2 設2 NO ACTIONについて

 にゃんさん(No.1) 
H30 午後T 問2 参照制約 NO ACTIONの記載について、納得ができない部分があります。
当方の理解不足かとは思いますが、どなたかご教示いただけませんでしょうか。

問題文では参照制約の定義として「NO ACTION:参照先のテーブルの行を削除または更新したとき、参照元のテーブルの行に対して何もしない」と記載がありますが、
正しくは、「NO ACTIONは参照先のテーブルの行を削除または更新できない」ではないでしょうか。

実際、(1)(b)では参照先の削除時にNO ACTION検査制約のためにエラーとなる旨の回答を求められています。

これでは誤記と言われても仕方がないのでは、と思ってしまいます。。。
もしくは、削除/更新の段階ではNO ACTIONでは何もしないが、その状態に対し、その後の検査契機モードで制約を検査してエラーにする、ということなのでしょうか。

どなたかご教示をいただけますでしょうか。
2021.10.05 12:43
GinSanaさん(No.2) 
DB・ブロンズエキスパート
この投稿は投稿者により削除されました。(2021.10.06 07:56)
2021.10.06 07:56
GinSanaさん(No.3) 
DB・ブロンズエキスパート
NO ACTIONは「削除/更新」の際に当該行を参照する行の削除を拒否する  がいいでしょうかね。問題といてるときはあんまり違和感を覚えはしませんでしたが、正確に書くならそうでしょうかね。
NO ACTIONの場合、DBMSによって反応タイミングを変えられる(文単位ではなく、トランザクション単位の判定タイミングにできる。これを遅延制約という。例:Oracle、Postgres)場合とそうでない場合がある(例:MySQL)ので、本当はRESTRICTにしとけといいたいところではありますね。DB依存でそういう設定をしていないと書いていないのなら、結構ややこしい立て付けの問題になるとは思います。
NO ACTIONは標準SQLの範疇でRESTRICTは・・・とも思いましたが、どっちも標準SQLですからねえ。なおさら遅延制約は使わないことを書いとけよ、とは思います。書いたからどうだ、と言われればそうなんですが。

2021.10.06 07:55
 にゃんさん(No.4) 
ご回答いただきありがとうございます。
遅延制約については、以下のような記載があるのですがこれが該当するということでしょうか。

=====問題文より抜粋==================
1.参照制約
(1)挙動モード
@NO ACTION:参照先のテーブルの行を削除または更新したとき、参照元のテーブルの行に対して何もしない。
@CASCADE:参照先のテーブルの行を削除または更新したとき、参照元のテーブルの行にも削除または更新を連鎖させる。

(2)検査契機モード
@即時モード:SQL実行終了ごとに、対象となるすべての行の実行結果に対して、制約を検査する。
A猶予モード:トランザクション数量時に、トランザクション内のすべてのSQLを実行した結果に対して、制約を検査する。
=======================

遅延制約については不勉強ながら初めて知った概念のため、解答時には字面通りに解釈するしかなかったのですが、知識としては以下2点を抑えていれば別段不自然ではない、ということでしょうか。
(a) NO ACTIONとは何か(というより、題中でNO ACTIONを違う意味で使用されることは無い)
(b) 遅延制約とは何か
2021.10.07 01:03
GinSanaさん(No.5) 
DB・ブロンズエキスパート
ああ、その記載がありましたね。その記載があることを忘れてました
そうなると、DBSPもこういうベンダ依存の部分がある・・・と思いましたが、たまたまMySQLがANSI標準からずれてるのかもしれません
2021.10.07 06:48
 にゃんさん(No.6) 
ありがとうございます。
別年度を解いていたらRESTRICTも出てきたので、問題中でRDBMSの仕様として定義する、というだけのかもしれません。

おかげ様でスッキリして試験を迎えられます。ありがとうございました!!
2021.10.09 17:17

【返信投稿用フォーム】

お名前(10文字以内)

顔アイコン


本文(2,000文字以内)

投稿削除用のパスワード(20文字以内)

プレビュー
※宣伝や迷惑行為を防止するため、当サイトとIPAサイト以外のURLを含む文章の投稿は禁止されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2016-2021 データベーススペシャリストドットコム All Rights Reserved.

Pagetop