nếu cơ sở dữ liệu là InnoDB, bạn không cần phải tham gia xóa. chỉ có
DELETE FROM spawnlist WHERE spawnlist.type = "monster";
có thể được sử dụng để xóa tất cả các bản ghi được liên kết với khóa ngoại trong các bảng khác, để làm điều đó trước tiên bạn phải liên kết các bảng của mình trong thời gian thiết kế.
CREATE TABLE IF NOT EXIST spawnlist (
npc_templateid VARCHAR(20) NOT NULL PRIMARY KEY
)ENGINE=InnoDB;
CREATE TABLE IF NOT EXIST npc (
idTemplate VARCHAR(20) NOT NULL,
FOREIGN KEY (idTemplate) REFERENCES spawnlist(npc_templateid) ON DELETE CASCADE
)ENGINE=InnoDB;
nếu bạn sử dụng MyISAM, bạn có thể xóa các bản ghi tham gia như thế này
DELETE a,b
FROM `spawnlist` a
JOIN `npc` b
ON a.`npc_templateid` = b.`idTemplate`
WHERE a.`type` = 'monster';
ở dòng đầu tiên tôi đã khởi tạo hai bảng tạm thời để xóa bản ghi, ở dòng thứ hai tôi đã gán bảng tồn tại cho cả a và b nhưng ở đây tôi đã liên kết cả hai bảng với nhau bằng từ khóa join và tôi đã khớp khóa chính và khóa ngoại cho cả hai bảng tạo liên kết, ở dòng cuối cùng, tôi đã lọc bản ghi theo trường để xóa.