我想通过此表中的"url"键匹配删除记录:
$sql = "CREATE TABLE IF NOT EXISTS Articls
(
id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
alias INT(10) UNSIGNED NOT NULL,
title VARCHAR(254) COLLATE utf8_persian_ci NOT NULL,
url VARCHAR(2083) COLLATE utf8_persian_ci NOT NULL,
UNIQUE (alias),
UNIQUE (title),
) DEFAULT COLLATE utf8_persian_ci";
但在那之后,我也想删除"标签"表中的所有相对标签名称!
$sql = "CREATE TABLE IF NOT EXISTS Tags (
id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
alias INT(10) UNSIGNED NOT NULL,
name VARCHAR(256) COLLATE utf8_persian_ci NOT NULL,
state INT(2) NOT NULL DEFAULT 1,
created INT(11) NOT NULL,
FOREIGN KEY (alias) REFERENCES Articls (alias)
) DEFAULT COLLATE utf8_persian_ci";
我可以只用 mysql 查询来做吗?
我现在用一些php/mysql来做:
1-get 别名,其中 url = Articls 中的"我的网址"。
2-删除标签表中的所有记录。
- 删除"Articls"表中的目标记录(其中 URL = "我的 URL")。
你应该使用 2 个查询
DELETE FROM Tags
WHERE alias IN (SELECT id FROM Articls WHERE url = 'myurl.com')
;
DELETE FROM Articls WHERE url = 'myurl.com'
;
或者,您可以使用级联删除。
相反:
FOREIGN KEY (alias) REFERENCES Articls (alias);
你需要:
FOREIGN KEY (alias) REFERENCES Articls (alias) ON DELETE CASCADE
在这种情况下,每次从Articls中删除行时,标签处的相应行将自动删除。