2011-12-08 13 views
-4

MySQLで複数のテーブルを作成しましたが、1つ以上のテーブルの一部のフィールドのデータは他のテーブルに存在する必要があります。私はテーブルに外部キーを追加することでこれを作成できることを知っています。外部キーを使用してMySQLテーブルをリンクする

これはどのように行うことができますか。

すべてのリンクを削除すると削除されないように注意してください。値はnullに変更できます。私は他の方法でそれを管理します。

PS:これを行うにはコードが必要です。

+0

あなたがグーグルを試みたことがありますか? –

+0

なぜ投票とクローズの要求があるのですか? – sikas

+0

@ルチアン:はい!助けることができる良いチュートリアルに到達することができませんでした。私が必要とするのは、別のテーブルから外部キーを追加するためにテーブルを変更する方法です。 – sikas

答えて

1
CREATE TABLE other (
    id unsigned integer auto_increment primary key 
    ,field1 varchar(100) not null) ENGINE = InnoDB; 

CREATE TABLE example (
    id unsigned integer auto_increment primary key 
    ,field1 varchar(100) not null 
    ,other_id unsigned integer 
    ,FOREIGN KEY FK_example_other_table (foreign_id) REFERENCES other(id) 
    ON DELETE RESTRICT 
    ON UPDATE CASCADE) ENGINE = InnoDB; 

参照してください:http://dev.mysql.com/doc/refman/5.1/en/create-table.html

+0

'on update cascade'は無視できますか? – sikas

+0

@sikasでは、 'ON DELETE'と' ON UPDATE'節は、外国の制約がどのように働くかを決定するため、非常に重要です。これらは常に手作業で設定する必要があります。なぜなら、デフォルトではあなたが望んでいない可能性が高いからです(そして、デバッグ時に不要な時間を費やして、外部キーチェックエラーが発生する理由を理解しようとします)。 – Johan

+0

私はIDでリンクするだけなので、IDデータが変更された場合は、レコードが削除されない限りIDは変わりません。したがって、更新は必要ありません。そして、on deleteは、別のレコードとリンクするまで、値をnullに設定する必要があります。 – sikas

関連する問題