[解決済み] MySQLの外部キー 'on delete restrict' 句の正確な意味
2022-03-10 01:17:31
質問
MySQLのテーブルを2つ持っています。
collections
と
privacy_level
.
で定義しています。
外部キー
というようなリレーションがあります。
CREATE TABLE collections (
coll_id smallint NOT NULL AUTO_INCREMENT UNSIGNED,
name varchar(30) NOT NULL,
privacy tinyint NOT NULL UNSIGNED DEFAULT '0',
PRIMARY KEY(coll_id),
INDEX(privacy),
FOREIGN KEY fk_priv (privacy) REFERENCES privacy_level (level) ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=InnoDB;
CREATE TABLE privacy_level (
level tinyint NOT NULL UNSIGNED,
name varchar(20) NOT NULL,
PRIMARY KEY (level)
) ENGINE InnoDB;
について質問です。
ON DELETE RESTRICT
節があり、オンラインマニュアルやグーグル検索で答えを導き出すことができませんでした。
ということなのでしょうか?
決して
から行を削除します。
privacy_level
?
それとも、私が
できない
から行を削除します。
privacy_level
もし
からの行
collections.privacy
の値と同じ値を持っている。
privacy_level.level
?
つまり、もし
privacy_level
があります。
level = 2
,
name = 'top secret'
が、collections.Privacyのどのエントリも
privacy = 2
を削除することはできますか?
level = 2
,
name = 'top secret'
のエントリーが必要ですか?それとも列単位で禁止されているのでしょうか?
どんな洞察でもありがとうございます。
解決方法は?
ON DELETE RESTRICT
というのは
できない
を削除します。
親行
もし
子行が存在する
その親行の値を参照する。 親行に参照する子行がない場合、その親行を削除することができます。
ON DELETE RESTRICT
は、かなり
余分なもの
構文は、外部キーのデフォルトの動作だからです。
関連
-
[解決済み】mysqlが内部または外部のコマンド、操作可能なプログラムまたはバッチとして認識されない。
-
[解決済み】MySQLのforeachループ
-
[解決済み] MySQL エラー: キーの長さがないキー指定
-
[解決済み] WindowsでMySQLの画面コンソールをクリアする方法は?
-
[解決済み] 各単語の最初の文字を大文字にする(既存のテーブルの場合
-
[解決済み] SQL エラー - テーブルの定義が正しくありません; auto カラムは 1 つしか存在できません。
-
[解決済み] T-SQLを使用して外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み] 外部キー制約のあるテーブルを切り捨てるには?
-
[解決済み] MySQL エラー 1215。外部キー制約を追加できません
-
[解決済み】外部キー制約。ON UPDATEとON DELETEを使用する場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】mysql 外部キー制約が不正に形成されているエラー
-
[解決済み】mysql.plugin テーブルを開くことができません。mysql_upgradeを実行して作成してください。
-
[解決済み】mysqld_safe UNIX ソケットファイル用のディレクトリ '/var/run/mysqld' が存在しません。
-
[解決済み】MySQLのDESCRIBE [table]に相当するSQLiteはあるか?]
-
[解決済み] Error Dropping Database (Can't rmdir '.test', errno: 17)
-
[解決済み] JDBC経由でMySQLにUTF-8を挿入しようとすると、"不正な文字列値 "と表示される?
-
[解決済み] MYSQLのTIMESTAMP比較
-
[解決済み] MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175が発生する
-
[解決済み] MySQL エラー 1241。オペランドには1つのカラムが含まれている必要があります。
-
[解決済み] テーブルがクラッシュしたと判定されたため、修復する必要があります。