ドゥードゥリング

趣味や技術など、
役に立つのかよくわからない話が中心。

【備忘録】制約の変更はできない【SQL】

2018年04月04日 23時11分48秒 | 技術

概要
前日の日記と同じくOracle SQLの話題です。 タイトルにもありますが、制約の中身は途中で変更することができないようです。

 

経緯

蛇足ではありますが、誤解が溶けた理由を一つ...

SQLの勉強がてらに練習用のDBであれこれSQL文を試していた時、一度定義した制約の中身を途中で変更する必要になりました。

CREATE TABLE employees (
     id NUMBER(4) PRIMARY KEY,
     name VARCHAR2(20),
     branch_id VARCHAR(10) CONSTRAINT emp_fname_fk REFERENCES branch(id) //この列に「ON DELETE CASCADE」オプションを付け加えたい
)

その時の私は制約のオプションも NOT NULLの様に途中で変更できるものと思っていたため、ALTER TABLE文を使って変えようとしたのですがうまくいかず。

日本語のサイトを回っても「制約を途中で変更する方法」がどこにも載っておらず途方にくれたのですが、stack overflowに解決方法がありました。

制約を途中で変更する方法がSQLにはなく、どうしても変えるには一度制約を削除して変更後の内容に新しく作り変える必要があるようです。

 

...しかし日本のサイトには上記について記しているサイトがどこにもなく正直困りました。

当たり前すぎて書くまでもない事なのかもしれませんが、次回からは英語のサイトも見ていこうと思います ^^;)


text

<iframe height="'265'" scrolling="'no'" title="'GitHub" Icon' src="'//codepen.io/kristinadinellari/embed/gXzGmW/?height=265&theme-id=0&default-tab=css,result&embed-version=2'" frameborder="'no'" allowtransparency="'true'" allowfullscreen="'true'" style="'width:" 100%;'>See the Pen <a href="'https://codepen.io/kristinadinellari/pen/gXzGmW/'">GitHub Icon</a> by Kristina (<a href="'https://codepen.io/kristinadinellari'">@kristinadinellari</a>) on <a href="'https://codepen.io'">CodePen. </iframe>