外部キーテーブルの主キーがどのテーブルの外部キーであるかを照会する選択 テーブル名、 列名、 制約名、 参照テーブル名、 参照列名 から INFORMATION_SCHEMA.KEY_COLUMN_USAGE どこ TABLE_SCHEMA = 'mydbname' AND REFERENCED_TABLE_NAME = 'テーブル名'; すべての外部キーステートメントをエクスポートする選択 CONCAT('ALTER TABLE ', TABLE_NAME, ' ADD CONSTRAINT ', CONSTRAINT_NAME, ' FOREIGN KEY (', COLUMN_NAME, ') REFERENCES ', REFERENCED_TABLE_NAME, '(', REFERENCED_COLUMN_NAME, ') ON DELETE CASCADE ON UPDATE CASCADE;') から INFORMATION_SCHEMA.KEY_COLUMN_USAGE どこ TABLE_SCHEMA = 'mydbname' かつ、REFERENCED_TABLE_NAME が NULL ではありません。 すべての外部キーステートメントを削除する選択 CONCAT('ALTER TABLE', テーブル名, 'DROP FOREIGN KEY', 制約名, ';') から INFORMATION_SCHEMA.KEY_COLUMN_USAGE どこ TABLE_SCHEMA = 'mydbname' かつ、REFERENCED_TABLE_NAME が NULL ではありません。 自動増分自動増分フィールドを作成するためのステートメントをエクスポートします選択 CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', 'MODIFY COLUMN `', COLUMN_NAME, '` ', UPPER( COLUMN_TYPE ), ' NOT NULL AUTO_INCREMENT COMMENT "',COLUMN_COMMENT,'";' ) を 'ADD_AUTO_INCREMENT' として追加します から 情報スキーマ.COLUMNS どこ TABLE_SCHEMA = 'mydbname' AND EXTRA = UPPER( 'AUTO_INCREMENT' ) 注文する テーブル名ASC; すべての自動増分フィールドを作成および削除する選択 CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', 'MODIFY COLUMN `', COLUMN_NAME, '` ', UPPER( COLUMN_TYPE ), ' NOT NULL;' ) を 'DELETE_AUTO_INCREMENT' として から 情報スキーマ.COLUMNS どこ TABLE_SCHEMA = 'mydbname' AND EXTRA = UPPER( 'AUTO_INCREMENT' ) 注文する テーブル名ASC; 索引すべてのインデックスをエクスポート選択 連結( 'ALTER TABLE `'、 テーブル名、 '` ', '追加 '、 もし ( 非ユニーク = 1、 場合 UPPER(インデックスタイプ) 「FULLTEXT」の場合 「フルテキストインデックス」 「空間」の場合 '空間インデックス' ELSE CONCAT( 'インデックス `', INDEX_NAME, '` USING ', INDEX_TYPE ) 終わり、 もし ( UPPER( INDEX_NAME ) = 'PRIMARY', CONCAT( 'PRIMARY KEY USING ', INDEX_TYPE ), CONCAT( 'UNIQUE INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE ))), CONCAT( '(`', 列名, '`)' ), ';' ) 'ADD_ALL_INDEX' として から 情報スキーマ.統計 どこ TABLE_SCHEMA = 'mydbname' 注文する テーブル名 ASC、 インデックス名ASC; すべてのインデックスを削除選択 CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', CONCAT( 'DROP ', IF ( UPPER( INDEX_NAME ) = 'PRIMARY', 'PRIMARY KEY', CONCAT( 'INDEX `', INDEX_NAME, '`' ))), ';' ) AS 'DELETE_ALL_INDEX' から 情報スキーマ.統計 どこ TABLE_SCHEMA = 'mydbname' 注文する テーブル名ASC; データ結合データの移行やマージを行う際にさらに難しいのは、異なるデータベースの主キーが重複しているため、主キーの値を一括で変更する必要があることです。重複を避けるために、自動増分番号を文字列に変更することができます。 手順は基本的に次のとおりです
主キーの値を変更するときは注意してください
例えば 自己制約の削除 テーブル `t_director` を変更し、外部キー `fk_directorpid` を削除します。 値を変更 t_director を更新し、directorid=directorid+100000000 を設定します。 t_directorを更新し、directorid=CONV(directorid,10,36)を設定します。 t_director を更新し、directorpid=directorpid+100000000 を設定します。ここで、directorpid は null ではありません。 t_director を更新し、directorpid が null ではない場合に directorpid=CONV(directorpid,10,36) を設定します。 自己制約の追加 ALTER TABLE t_director に、制約 fk_directorpid を追加し、外部キー (directorpid) を参照します。t_director(directorid) は、ON DELETE CASCADE、ON UPDATE CASCADE です。 知らせ
上記はMysqlのインデックスと制約のサンプルステートメントの詳細です。MySQLのインデックスと制約の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Dockerは起動されていないコンテナの設定情報を変更します
>>: Vue3 (III) ウェブサイトホームページレイアウト開発
WeChat アプレット プロジェクトを書いていたとき、その中に「都市選択」機能がありました。作者は...
VScode リモートデバッグ Linux プログラムの問題について見てみましょう。具体的な内容は以...
Animation.css を使うと公式サイトのフォントがだんだんと変わっていくのが分かりました。c...
HTML5 と jQuery はアップロード前にローカル画像のプレビューを実装しており、その効果は...
Linux で MySQL データベースをアンインストールするにはどうすればいいですか? 以下では、...
ユニアプリコード <テンプレート> <表示> <image v-for...
実装準備 # ファイルパスをバックアップする必要があります: /opt/apollo/logs/ac...
目次使用EsLintの使用プロフィールを追加するPrettierの使用huskyとlint-stag...
はじめに以前は、Docker イメージは Azure のコンテナー レジストリに保存されていました。...
目次1. EclipseがTomcatを構成する2. Tomcat の無効なポートの解決方法方法1:...
序文長い間さまざまな資料を読んで、ついに selenium+testng のパラメータ化の問題を解決...
1 ストアドプロシージャ1.1 ストアドプロシージャとは何かストアド プロシージャは、特定の機能を実...
1. RPM パッケージのインストール手順: 1. soft.version.rpm などの対応する...
最新のソリューション: -v /usr/share/zoneinfo/Asia/Shanghai:/...
目次1. setState() の説明1.1 データの更新1.2 推奨構文1.3 2番目のパラメータ...