版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xinjianwuhen1991/article/details/81913477
1 背景
建表语句:
CREATE TABLE `student` (
`id` int(11) DEFAULT NULL,
`cname` varchar(30) DEFAULT NULL,
`score` double DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` tinyint(4) DEFAULT NULL,
`parent_id` int(100) DEFAULT NULL,
`logical_model_id` int(11) DEFAULT NULL,
`logical_column_code` varchar(255) DEFAULT NULL,
`version_type` int(11) DEFAULT NULL,
UNIQUE KEY `logical_model_id` (`logical_model_id`,`logical_column_code`,`version_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
然后在表上logical_model_id,logical_column_code,version_type三个字段上建立唯一索引。
2 现象
在表中已经有了1,'city_id',0的情况下插入语句:
INSERT INTO `student`
(`cname`, `age`, `logical_model_id`, `logical_column_code`, `version_type`) VALUES
('we', 12, 1, 'city_id', 0)
ON DUPLICATE KEY UPDATE cname='whisper' AND
age=100;
报错:Error : Truncated incorrect DOUBLE value: 'we'
如果只有cname,没有age是没有问题的。如果有and则会报错。