1
私は外部キーを使用して2つのテーブルをリンクしようとしています。 1つのテーブルはユーザであり、もう1つはuserInfoです。ユーザーを削除すると、その情報も削除する必要があります。ユーザーテーブルからユーザーを削除すると、usersInfoのエントリはそのまま残ります。私は何が間違っているのかわからない。SQLの外部キーと他のテーブルの参照
CREATE TABLE users (
userid INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL,
email VARCHAR(50) NOT NULL,
password VARCHAR(32) NOT NULL,
userlevel INT UNSIGNED NOT NULL,
rating int,
organization int(1),
timestamp varchar(20) NOT NULL,
);
ここは私のuserinfoのテーブルです。はい、私はそれが同じテーブルにある可能性があることを知っています。私は簡単な例のためにこれをやっています。
CREATE TABLE usersInfo(
userid int auto_increment NOT NULL,
userlocation varchar(50),
about varchar(300),
userkeywords varchar(150),
FOREIGN KEY(userid) REFERENCES users(userid) ON DELETE CASCADE ON UPDATE CASCADE
);
編集 - 問題が解決しました。助けてくれた皆様に感謝します。
CREATE TABLE
ステートメントの最後にTYPE = InnoDB
が追加されました。
最初のクエリで 'timestamp varchar(20)NOT NULL'の後にコンマを削除しても、うまく動作します。これはMySQL版ですか?これらは外部キー関係をしないMyISAMテーブルですが、外部キー関係を宣言してもエラーを投げないでしょうか? – Daan
わかりません。私はそれがデフォルトでInnodbだと仮定しました。どうすれば確認できますか? – user1104854
あなたのMySQLバージョンは何ですか?デフォルトはMyISAMでMySQL 5.5.5(http://dev.mysql.com/doc/refman/5.5/en/innodb-default-se.html)までで、あなたは 'CREATE TABLE'でエンジンを指定していません5.5.5より下のものを使用している場合、これらはMyISAMテーブルです。これを確認するには、 'SHOW TABLES'クエリを使用して既存のテーブルに使用されているエンジンを確認することもできます。 – Daan