数据库建表脚本DROP TABLE IF EXISTS `s_big_dict`;
CREATE TABLE `s_big_dict` (
`dict_code_` varchar(20) NOT NULL,
`dict_name_` varchar(50) DEFAULT NULL,
`data_value_` decimal(20,8) DEFAULT NULL,
`param1_name_` varchar(50) DEFAULT NULL,
`param1_value_` varchar(50) DEFAULT NULL,
`param2_name_` varchar(50) DEFAULT NULL,
`param2_value_` varchar(50) DEFAULT NULL,
`param3_name_` varchar(50) DEFAULT NULL,
`param3_value_` varchar(50) DEFAULT NULL,
`param4_name_` varchar(50) DEFAULT NULL,
`param4_value_` varchar(50) DEFAULT NULL,
`param5_name_` varchar(50) DEFAULT NULL,
`param5_value_` varchar(50) DEFAULT NULL,
UNIQUE index `index1` (`dict_code_`,`param1_value_`,`param2_value_`,`param3_value_`,`param4_value_`,`param5_value_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;数据脚本INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.10000000', '温度', '36', '浓度', '0.05', '溶质', null, null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.30000000', '温度', '36', '浓度', '0.1', '溶质', null, null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.30000000', '温度', '36', '浓度', '0.2', '溶质', null, null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.30000000', '温度', '36', '浓度', '0.5', '溶质', 'HCl', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.40000000', '温度', '36', '浓度', '1', '溶质', 'HCl', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.70000000', '温度', '36', '浓度', '0.5', '溶质', 'H2SO4', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.70000000', '温度', '36', '浓度', '0.5', '溶质', 'NaOH', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-5.30000000', '温度', '36', '浓度', '1', '溶质', 'H2SO4', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-5.30000000', '温度', '36', '浓度', '1', '溶质', 'NaOH', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-5.30000000', '温度', '36', '浓度', '1', '溶质', 'NaOH', null, null, null, null);MySQL新人,按道理说,最后一条记录应该无法插入才对,但现在看,插入完全没有报错,怎么回事?
CREATE TABLE `s_big_dict` (
`dict_code_` varchar(20) NOT NULL,
`dict_name_` varchar(50) DEFAULT NULL,
`data_value_` decimal(20,8) DEFAULT NULL,
`param1_name_` varchar(50) DEFAULT NULL,
`param1_value_` varchar(50) DEFAULT NULL,
`param2_name_` varchar(50) DEFAULT NULL,
`param2_value_` varchar(50) DEFAULT NULL,
`param3_name_` varchar(50) DEFAULT NULL,
`param3_value_` varchar(50) DEFAULT NULL,
`param4_name_` varchar(50) DEFAULT NULL,
`param4_value_` varchar(50) DEFAULT NULL,
`param5_name_` varchar(50) DEFAULT NULL,
`param5_value_` varchar(50) DEFAULT NULL,
UNIQUE index `index1` (`dict_code_`,`param1_value_`,`param2_value_`,`param3_value_`,`param4_value_`,`param5_value_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;数据脚本INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.10000000', '温度', '36', '浓度', '0.05', '溶质', null, null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.30000000', '温度', '36', '浓度', '0.1', '溶质', null, null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.30000000', '温度', '36', '浓度', '0.2', '溶质', null, null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.30000000', '温度', '36', '浓度', '0.5', '溶质', 'HCl', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.40000000', '温度', '36', '浓度', '1', '溶质', 'HCl', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.70000000', '温度', '36', '浓度', '0.5', '溶质', 'H2SO4', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-4.70000000', '温度', '36', '浓度', '0.5', '溶质', 'NaOH', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-5.30000000', '温度', '36', '浓度', '1', '溶质', 'H2SO4', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-5.30000000', '温度', '36', '浓度', '1', '溶质', 'NaOH', null, null, null, null);
INSERT INTO `s_big_dict` VALUES ('001', '溶液浓度温度补正值', '-5.30000000', '温度', '36', '浓度', '1', '溶质', 'NaOH', null, null, null, null);MySQL新人,按道理说,最后一条记录应该无法插入才对,但现在看,插入完全没有报错,怎么回事?
也就是说有null值的就不行?
之前一直在用SQL Server,这样可以控制住
也就是说有null值的就不行?
之前一直在用SQL Server,这样可以控制住
对的,unique索引是唯一索引,但实际上,里面的值可以有null,这个就是unique和primary key的不同,primary key是不能有null的。另外,需要说明的是在sql server中的unique也是可以有null的,因为null什么也不是,所以可以存在多个:1 null
1 null
2 xx
2 null
这些都可以插入到表里,不会报错。