一切顺利.
我在MySQL(MariaDB)数据库中有一个表,其中包含以下模式:
CREATE TABLE `scheduled_immobilise` ( `id` int(11) NOT NULL AUTO_INCREMENT, `account` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, `device` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, `allow_from` time DEFAULT NULL, `allow_to` time DEFAULT NULL, `active` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, `last_updated` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `cron_id_from` int(11) DEFAULT NULL, `cron_id_to` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique` (`account`,`device`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
我要做的是编写一个查询,它将创建一行(如果唯一索引不存在),或者如果它已经存在则更新它.我知道你可以先做一个选择查询来做到这一点,但最终我希望避免这种情况.下面是我用来创建的SQL查询.请注意这是使用PDO命名的占位符..
INSERT INTO scheduled_immobilise ( account, device, allow_from, allow_to, active ) VALUES ( :account, :device, :allow_from, :allow_to, :active )
非常感谢任何帮助,提前感谢!
保罗.
这有一个mysql选项
INSERT INTO scheduled_immobilise ( account, device, allow_from, allow_to, active ) VALUES ( :account, :device, :allow_from, :allow_to, :active ) ON DUPLICATE KEY UPDATE account = :account, device = device...etc