我想在同一个Mysql查询中更新两个表,第一个名为tags
,第二个名为links
。
标签表如下:
CREATE TABLE `tags` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`category_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`last_modified` datetime DEFAULT NULL,
`name` text,
`title` text,
`use_number` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
);
链接表如下所示:
CREATE TABLE `links` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`entry_id` int(11) DEFAULT NULL,
`tag_id` int(11) DEFAULT NULL,
`start_pos` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
);
如果有links.entry_id
,我想删除links
表格中的所有相关行,然后加入links.tag_id
和tags.id
,减少关联的tags.use_number
由1。
我尝试进行查询,但显然无效。
DELETE FROM links INNER JOIN tags ON links.tag_id = tags.id AND entry_id = ? SET tags.use_number = tags.use_number - 1;
提前致谢!
答案 0 :(得分:4)
这不是DELETE语句的有效语法。
您无法更新DELETE查询中的表格。
你可以做的是创建一个trigger before delete
来更新你的代码表,方法是将关联的tags.use_number减少1 WHERE tags.id = OLD.tag_id
:
CREATE TRIGGER decrease_tags_use_number BEFORE DELETE ON links
FOR EACH ROW BEGIN
UPDATE tags SET use_number = use_number - 1 WHERE id = OLD.tag_id;
END;