[解決済み] 外部キー参照アクションを変更するには?(動作)
2022-10-09 17:28:57
質問
外部キーを持つカラムを含むテーブルをセットアップし、そのカラムに
ON DELETE CASCADE
(親が削除されたら子も削除)
これを次のように変更するには、SQL コマンドはどうなりますか。
ON DELETE RESTRICT
? (子を持つ親を削除することはできません。)
どのように解決するのですか?
古い質問ですが、1つは助けを得ることができるように、答えを追加します。
その2つのステップのプロセス。
仮に、a
table1
には
外部キー
というカラム名で
fk_table2_id
を持つ
制約
名前
fk_name
そして
table2
は参照されるテーブルで、キー
t2
(
私の図では以下のようになります。
).
table1 [ fk_table2_id ] --> table2 [t2]
最初のステップ DROP old CONSTRAINT: ( 参照 )
ALTER TABLE `table1`
DROP FOREIGN KEY `fk_name`;
<サブ 制約が削除されても、カラムは削除されません。
第二段階 新しいCONSTRAINTを追加します。
ALTER TABLE `table1`
ADD CONSTRAINT `fk_name`
FOREIGN KEY (`fk_table2_id`) REFERENCES `table2` (`t2`) ON DELETE CASCADE;
<サブ 制約の追加、カラムはすでに存在する
例
私の場合は
UserDetails
テーブルが参照する
Users
テーブルを参照しています。
mysql> SHOW CREATE TABLE UserDetails;
:
:
`User_id` int(11) DEFAULT NULL,
PRIMARY KEY (`Detail_id`),
KEY `FK_User_id` (`User_id`),
CONSTRAINT `FK_User_id` FOREIGN KEY (`User_id`) REFERENCES `Users` (`User_id`)
:
:
最初のステップ
mysql> ALTER TABLE `UserDetails` DROP FOREIGN KEY `FK_User_id`;
Query OK, 1 row affected (0.07 sec)
第二段階
mysql> ALTER TABLE `UserDetails` ADD CONSTRAINT `FK_User_id`
-> FOREIGN KEY (`User_id`) REFERENCES `Users` (`User_id`) ON DELETE CASCADE;
Query OK, 1 row affected (0.02 sec)
の結果です。
mysql> SHOW CREATE TABLE UserDetails;
:
:
`User_id` int(11) DEFAULT NULL,
PRIMARY KEY (`Detail_id`),
KEY `FK_User_id` (`User_id`),
CONSTRAINT `FK_User_id` FOREIGN KEY (`User_id`) REFERENCES
`Users` (`User_id`) ON DELETE CASCADE
:
関連
-
[解決済み】MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175のエラーが発生しました。
-
[解決済み] FOREIGN KEY制約で参照されているため、テーブルを切り捨てることができないのですか?
-
[解決済み] MySQLで重複する値を検索する
-
[解決済み] MySQLでJoinを使った削除
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について
-
[解決済み] MySQL エラー 1215。外部キー制約を追加できません
-
[解決済み] FOREIGN KEY制約を導入すると、サイクルや複数のカスケード・パスが発生する可能性があります - なぜですか?
-
[解決済み】既存テーブルへの外部キー追加
-
[解決済み】外部キー制約。ON UPDATEとON DELETEを使用する場合
-
[解決済み】MySQLで外部キー制約を追加できない
最新
-
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はこのようなUpdateステートメントを書くべきではありません
-
面接では選択式で聞かれましたが......。.for updateはテーブルをロックするか、行をロックするか?
-
[解決済み】マルチパート識別子をバインドできませんでした。
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
SQL Server のトランザクションは、try キャッチに記述しなければ、中間ステートメントがエラーを報告してもコミットされます。
-
群関数解の無効な使用
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?