设置唯一密钥检查0

时间:2015-02-16 08:13:45

标签: mysql

在表格中,我对box_number,price,start_val,end_val的组合进行了唯一值检查

所以不能有两个具有相同数字的盒子号码,它们具有相同的价格,start_val和end_val ..

现在的表数据

| box_type_id | box_number | price |start_val | end_val
|  1          |   7        | 5.00  |100       |1
|  2          |   5        | 10.00 |50        |40
|  3          |   5        | 5.00  |100       |1

我想做什么 我想为box_type_id 1改变5号的箱号,用箱子类型id 3改变箱号5和7;我的查询在下面......给我错误

MySQL数据库错误:重复输入' 7-5.00-100-1'关键字" unique_index'

但是在这里我在执行查询之前将唯一键检查设置为0.

我的查询

SET UNIQUE_CHECKS=0;
 Update `box_types` `bt` SET `bt`.`box_number` = "7" where `bt`.`box_type_id` = "3" ;
 Update `box_types` `bt` SET `bt`.`box_number` = "5" where `bt`.`box_type_id` = "1" ;
SET UNIQUE_CHECKS=1;

我该如何解决这个问题..还有其他问题吗?请指导我..

MY WHOLE TABLE

CREATE TABLE IF NOT EXISTS `box_types` (
 `box_type_id` bigint(20) unsigned NOT NULL,
 `box_number` int(10) unsigned NOT NULL COMMENT 'Box Number',
 `price` double(10,2) NOT NULL,
 `start_val` int(10) unsigned NOT NULL,
 `end_val` int(10) unsigned NOT NULL,
 `created_date` datetime NOT NULL,
 `updated_date` datetime DEFAULT NULL,
 `status` tinyint(3) unsigned DEFAULT '1',
 `created_by` bigint(20) unsigned NOT NULL COMMENT 'foreign key from users     table user_id',
 `updated_by` bigint(20) unsigned DEFAULT NULL COMMENT 'foreign key from users table user_id'
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

ALTER TABLE `box_types`
ADD PRIMARY KEY (`box_type_id`), ADD UNIQUE KEY `unique_index`     (`box_number`,`price`,`start_val`,`end_val`), ADD KEY `created_by` (`created_by`), ADD KEY `updated_by` (`updated_by`), ADD KEY `status` (`status`);


ALTER TABLE `box_types`
MODIFY `box_type_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;


ALTER TABLE `box_types`
ADD CONSTRAINT `box_types_ibfk_1` FOREIGN KEY (`updated_by`) REFERENCES `users` (`user_id`) ON UPDATE NO ACTION,
ADD CONSTRAINT `box_types_ibfk_2` FOREIGN KEY (`created_by`) REFERENCES `users` (`user_id`) ON UPDATE NO ACTION;



INSERT INTO `box_types` (`box_type_id`, `box_number`, `price`, `start_val`, `end_val`, `created_date`, `updated_date`, `status`, `created_by`, `updated_by`) VALUES
(1, 7, 5.00, 100, 1, '2015-02-16 08:29:39', NULL, 1, 1, NULL),
(2, 5, 10.00, 50, 40, '2015-02-16 08:30:05', NULL, 1, 1, NULL),
(3, 5, 5.00, 100, 1, '2015-02-16 08:45:42', NULL, 1, 1, NULL);

0 个答案:

没有答案