我希望通过' 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 alias url =' my url'在Articls。
2-删除Tags表中的所有记录。
答案 0 :(得分:0)
您应该使用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中删除行时,标签上的相应行都将被自动删除。