コンポーネントのデータベースがあります。各コンポーネントは特定のタイプです。つまり、コンポーネントと型の間には多対 1 の関係があります。タイプを削除するとき、そのタイプの外部キーを持つすべてのコンポーネントを削除したいと考えています。しかし、私が間違っていなければ、カスケード削除はコンポーネントが削除されたときに型を削除します。私が説明したことを行う方法はありますか?
80702 次
4 に答える
58
コンポーネントテーブルに含めるものは次のとおりです。
CREATE TABLE `components` (
`id` int(10) unsigned NOT NULL auto_increment,
`typeId` int(10) unsigned NOT NULL,
`moreInfo` VARCHAR(32),
-- etc
PRIMARY KEY (`id`),
KEY `type` (`typeId`)
CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)
InnoDBストレージエンジンを使用する必要があることを覚えておいてください。デフォルトのMyISAMストレージエンジンは外部キーをサポートしていません。
于 2009-02-04T13:37:48.727 に答える
4
このSQLを使用してください
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.key = T2.key WHERE 条件
于 2016-07-25T08:14:29.583 に答える
2
外部キー制約を ON DELETE CASCADE として定義する必要があります。
注: InnoDB ストレージ エンジンを使用する必要があります。デフォルトの MyISAM ストレージ エンジンは外部キー リレーションをサポートしていません。
CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment,
`name` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `ids` (`ids`)
CONSTRAINT `foreign` FOREIGN KEY (`ids`)
REFERENCES `table2` (`ids`) ON DELETE CASCADE ON UPDATE CASCADE
)
于 2016-04-04T09:30:57.947 に答える
0
Step 1. Create the buildings table:
CREATE TABLE buildings (
building_no INT PRIMARY KEY AUTO_INCREMENT,
building_name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
);
Step 2. Create the rooms table:
CREATE TABLE rooms (
room_no INT PRIMARY KEY AUTO_INCREMENT,
room_name VARCHAR(255) NOT NULL,
building_no INT NOT NULL,
FOREIGN KEY (building_no)
REFERENCES buildings (building_no)
ON DELETE CASCADE
);
Notice that the ON DELETE CASCADE clause at the end of the foreign key constraint
definition.
于 2020-10-28T04:02:27.517 に答える