2011-05-13 14 views
1

私は最近ジョブを切り替えました。この新しい会社ではMySQLを使用しています。私はSQL ServerとOracleを4年以上使用していますが、MySQLにはどのエクスプレッサンスもありません。 MySQLで見られる変わったことは、外部キー制約(カラムがforeginキーであることを意味するが、他のテーブルに存在するかどうかにかかわらずここに任意の値を挿入できるということを意味する)このFKはどこに関係するか)。今私はSQL ServerでNOCHECK foriegnキー制約の概念があることを知っていますが、MySQLデータベースを担当する新会社の人は、FKを尊重しないのはMySQLの普通のことであり、特別な設定NOCHECK FK制約)。外部キー制約が守られていません

データベースシステムでは、これらの基本的なチェックを行わずに参照を完全に確実にすることはできません。ローカルのmySQL「エキスパート」がそれをよく知っているのか、それともmySQLが本当にFKのルールを尊重していないのか分かりません。何かご意見は?

答えて

3

テーブルがInnoDBエンジンを使用していることを確認してください。最近までデフォルトであったMyISAMエンジンを使用する場合、外部キー宣言は強制されません。

  • のMyISAM - - デフォルトなしFKサポート
  • のInnoDB - FKをサポートしていない - しかし、あなたができる両方のエンジンでのMyISAM

ようには全文検索

+0

どのように私はそれを確認することができますか?私は完全にmySQLに慣れていることを覚えています –

+0

'show create table foo;' –

2

MySQLは異なるDBエンジンを持っていますテーブルを作成してFKを作成しようとしますが、MyISAMは単にそれを無視します。

0

また、外部キーが強制されていることを確認してください。何らかの理由で彼らは私のものではなく、1週間の頭痛につながった!

チェック:

SELECT @@FOREIGN_KEY_CHECKS 

セット:

SET FOREIGN_KEY_CHECKS=1 
関連する問題