我創建了下表中MariaDB的MariaDB的INSERT INTO ... SELECT ...對重複影響0行
創建表
CREATE TABLE `email_templates_pending` (
`template_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`template_name` varchar(100) NOT NULL,
`template_data` text,
`modify_type` varchar(16) NOT NULL,
`modify_by` varchar(50) NOT NULL,
`modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`template_id`),
UNIQUE KEY `template_name` (`template_name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
而且在該表中插入一排template_id = 1
。我想更新下面
SQL語句使用以下INSERT INTO...SELECT...ON DUPLICATE KEY UPDATE
語句行
INSERT INTO email_templates_pending
(template_id, template_name, template_data, modify_by, modify_type)
SELECT template_id, template_name, template_data, '[email protected]', 'Deleted'
FROM email_templates WHERE template_id= '1'
ON DUPLICATE KEY UPDATE modify_type='Deleted'
然而,當我運行該語句返回成功,但與0 rows affected
。我有另一個類似的表具有不同的列名,按預期工作。我確保template_id是主鍵,所以我不確定還有什麼問題可以解決?
輸出是否可以更新語法,所以它不依賴於email_templates表? – Jester
爲什麼不只是使用更新? @Jester –
代碼的架構方式實際上需要從email_template表中獲取值,前提是它不存在於email_template_pending表中。你是否建議在INSERT SELECT之後運行第二個UPDATE語句? – Jester