1

次のstatemntによってSQLに外部キーを作成しました。

ALTER TABLE `users` ADD FOREIGN KEY ( `id`) 
REFERENCES `user_login` (`user_id`) 
ON DELETE CASCADE ;

作成は成功したように見えます。その後、deleteステートメントを実行します。

DELETE From user_login WHERE user_id = 1576;

それでもユーザーには、それを参照している行がまだ存在します。mysqlワークベンチを開くと、外部キーが作成されたという兆候が表示されません。なぜこれが起こるのか誰かが知っていますか?または私が間違っていることは何ですか?これは、2つのテーブルで1対1の関係です。

4

3 に答える 3

2

テーブルはMyISAM形式である可能性があり、外部キーをサポートしていません。

最初にそれをInnoDBに変換してみてください:

alter table users engine=InnoDB;
于 2011-01-22T17:37:29.123 に答える
1

また、両方users.iduser_login.user_idそれぞれにインデックスがあることを確認する必要があります。

于 2011-01-22T17:30:22.530 に答える
0

このコードをコピーしてMysqlスクリプトエディタに貼り付けて実行します。2つのテーブルカテゴリ製品があり、これらのテーブルは外部キーとしてcat_idを持っています。

CREATE DATABASE IF NOT EXISTS dbdemo;

USE dbdemo;

CREATE TABLE categories(
   cat_id int not null auto_increment primary key,
   cat_name varchar(255) not null,
   cat_description text
) ENGINE=InnoDB;

CREATE TABLE products(
   prd_id int not null auto_increment primary key,
   prd_name varchar(355) not null,
   prd_price decimal,
   cat_id int not null,
   FOREIGN KEY fk_cat(cat_id)
   REFERENCES categories(cat_id)
   ON UPDATE CASCADE
   ON DELETE RESTRICT
)ENGINE=InnoDB;
于 2017-09-15T14:03:11.760 に答える