MySQL UPDATE ON DUPLICATE KEY仅插入

杰里米

我正在尝试运行查询,以便它将重复插入或更新。我为重复项使用了唯一索引,但似乎无法正常工作。它仍然添加新记录。希望能有新的观点指出我的问题。谢谢。

这是我的图式

CREATE TABLE IF NOT EXISTS `pricing_puchasing` (
  `custno` varchar(6) DEFAULT NULL COMMENT 'customer code',
  `recipe` varchar(15) DEFAULT NULL,
  `item` varchar(120) NOT NULL COMMENT 'Item Code from dProduce',
  `unit_weight` double(12,4) DEFAULT NULL,
  `case_cost` double(12,4) DEFAULT NULL COMMENT 'Projected cost of item',
  `cost_per_lb` double(12,4) NOT NULL,
  `projected_price` float(12,3) DEFAULT NULL COMMENT 'projected Price',
  `projected_margin` float(12,3) DEFAULT NULL COMMENT 'Projected Margin',
  `trend` tinyint(1) DEFAULT NULL COMMENT 'Trend status 1=up, 0=down',
  `note` varchar(255) DEFAULT NULL COMMENT 'Note about the data',
  `week_of` date NOT NULL COMMENT 'Week of this data',
  `approved` tinyint(1) DEFAULT NULL COMMENT 'approval flag',
  `last_edited_from` varchar(20) NOT NULL COMMENT 'identifier to know where it was last saved from',
  `saved_at` datetime NOT NULL COMMENT 'Date time of save/update',
  `saved_by` int(11) NOT NULL COMMENT 'Created by user ID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stores pricing purchasing data';


ALTER TABLE `pricing_puchasing`
 ADD UNIQUE KEY `custno_recipe_item_week_of` (`custno`,`recipe`,`item`,`week_of`), ADD KEY `custno` (`custno`);

这是我正在测试的查询:

INSERT INTO pricing_puchasing 
    (recipe,item,unit_weight,case_cost,cost_per_lb,trend,note,week_of,saved_at,saved_by,approved,last_edited_from) 
VALUES 
    ('APPLEGRRAW','APPLEGRRAW',40.00,100.01,2.50,0,'','2014-07-28',NOW(),1,NULL,'purchasing') 
ON DUPLICATE KEY UPDATE 
    unit_weight=40.00,case_cost=100.01,cost_per_lb=2.50,trend=0,note='',saved_at=NOW(),saved_by=1,approved=NULL,last_edited_from='purchasing'

编辑我解决了custno丢失的问题,但是我仍然对插入重复项有疑问。我创建了一个sqlfiddle这次我正在测试2个NULL值,但还是不行...是我的架构还是我的查询问题?

spencer7593

NULL值不认为是“独一无二的”。唯一索引的第一列是custno,您未在INSERT中提供该列的值,因此默认值NULL用作该列的值。

由于NULL值不被认为是唯一的,因此INSERT将不会引发重复的键异常。

尝试使用custno列的非NULL值。


另外,您可以VALUES()在语句的UPDATE部分中使用特殊功能,以引用INSERT中提供的值。

ON DUPLICATE KEY UPDATE 
    unit_weight=VALUES(unit_weight),case_cost=VALUES(case_cost)

http://dev.mysql.com/doc/refman/5.5/zh-CN/miscellaneous-functions.html#function_values

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL ON DUPLICATE KEY UPDATE不会更新而是插入

来自分类Dev

MySQL DUPLICATE KEY UPDATE + SUM函数

来自分类Dev

ON DUPLICATE KEY UPDATE 콜백-MySQL

来自分类Dev

ON DUPLICATE KEY UPDATE回调-MySQL

来自分类Dev

python mysql DUPLICATE KEY UPDATE rrror

来自分类Dev

Java上的MySQL“ INSERT ... ON DUPLICATE KEY UPDATE”:如何区分插入/更新/ NoChange状态

来自分类Dev

MySQL 在 DUPLICATE KEY UPDATE 上插入多行 ... WHERE EXISTS(子查询)

来自分类Dev

使用ON DUPLICATE KEY UPDATE从SELECT插入

来自分类Dev

仅更新ON DUPLICATE KEY UPDATE的更改值

来自分类Dev

MySQL ON DUPLICATE KEY UPDATE和auto_increment索引

来自分类Dev

PHP MySQL INSERT ON DUPLICATE KEY UPDATE 不起作用

来自分类Dev

通过SELECT和ON DUPLICATE KEY UPDATE将PDO插入

来自分类Dev

ON DUPLICATE KEY UPDATE错误响应

来自分类Dev

调整 INSERT ON DUPLICATE KEY UPDATE

来自分类Dev

MYSQL:有没有一种方法可以使用ON DUPLICATE KEY UPDATE从另一个表插入值?

来自分类Dev

MYSQL:有没有一种方法可以使用ON DUPLICATE KEY UPDATE从另一个表插入值?

来自分类Dev

MYSQL:有没有一种方法可以使用ON DUPLICATE KEY UPDATE从另一个表插入值?

来自分类Dev

MYSQL:有没有一种方法可以使用ON DUPLICATE KEY UPDATE从另一个表插入值?

来自分类Dev

一个查询中的MYSQL ON DUPLICATE KEY UPDATE和IGNORE

来自分类Dev

MySQL-如何在批处理INSERT ON DUPLICATE KEY UPDATE查询中计算INSERT和UPDATES?

来自分类Dev

MySQL-可以“ INSERT INTO-ON DUPLICATE KEY UPDATE”导致数据丢失

来自分类Dev

指定单个列时,MySQL批量INSERT .. ON DUPLICATE KEY UPDATE

来自分类Dev

MySQL-如何在批处理INSERT ON DUPLICATE KEY UPDATE查询中计算INSERT和UPDATES?

来自分类Dev

MySQL-可以“ INSERT INTO-ON DUPLICATE KEY UPDATE”导致数据丢失

来自分类Dev

为什么在INSERT ... ON DUPLICATE KEY UPDATE上为MySQL中的键“ PRIMARY”给出重复的条目“ x”?

来自分类Dev

INSERT INTO... ON DUPLICATE KEY UPDATE 不更新 PHP 和 mySQL 中的重复值

来自分类Dev

php ON DUPLICATE KEY UPDATE 还说 1062: Duplicate entry for key 'PRIMARY'

来自分类Dev

在SQLITE Android中模拟DUPLICATE KEY UPDATE

来自分类Dev

ON DUPLICATE KEY UPDATE用新值更新

Related 相关文章

  1. 1

    MySQL ON DUPLICATE KEY UPDATE不会更新而是插入

  2. 2

    MySQL DUPLICATE KEY UPDATE + SUM函数

  3. 3

    ON DUPLICATE KEY UPDATE 콜백-MySQL

  4. 4

    ON DUPLICATE KEY UPDATE回调-MySQL

  5. 5

    python mysql DUPLICATE KEY UPDATE rrror

  6. 6

    Java上的MySQL“ INSERT ... ON DUPLICATE KEY UPDATE”:如何区分插入/更新/ NoChange状态

  7. 7

    MySQL 在 DUPLICATE KEY UPDATE 上插入多行 ... WHERE EXISTS(子查询)

  8. 8

    使用ON DUPLICATE KEY UPDATE从SELECT插入

  9. 9

    仅更新ON DUPLICATE KEY UPDATE的更改值

  10. 10

    MySQL ON DUPLICATE KEY UPDATE和auto_increment索引

  11. 11

    PHP MySQL INSERT ON DUPLICATE KEY UPDATE 不起作用

  12. 12

    通过SELECT和ON DUPLICATE KEY UPDATE将PDO插入

  13. 13

    ON DUPLICATE KEY UPDATE错误响应

  14. 14

    调整 INSERT ON DUPLICATE KEY UPDATE

  15. 15

    MYSQL:有没有一种方法可以使用ON DUPLICATE KEY UPDATE从另一个表插入值?

  16. 16

    MYSQL:有没有一种方法可以使用ON DUPLICATE KEY UPDATE从另一个表插入值?

  17. 17

    MYSQL:有没有一种方法可以使用ON DUPLICATE KEY UPDATE从另一个表插入值?

  18. 18

    MYSQL:有没有一种方法可以使用ON DUPLICATE KEY UPDATE从另一个表插入值?

  19. 19

    一个查询中的MYSQL ON DUPLICATE KEY UPDATE和IGNORE

  20. 20

    MySQL-如何在批处理INSERT ON DUPLICATE KEY UPDATE查询中计算INSERT和UPDATES?

  21. 21

    MySQL-可以“ INSERT INTO-ON DUPLICATE KEY UPDATE”导致数据丢失

  22. 22

    指定单个列时,MySQL批量INSERT .. ON DUPLICATE KEY UPDATE

  23. 23

    MySQL-如何在批处理INSERT ON DUPLICATE KEY UPDATE查询中计算INSERT和UPDATES?

  24. 24

    MySQL-可以“ INSERT INTO-ON DUPLICATE KEY UPDATE”导致数据丢失

  25. 25

    为什么在INSERT ... ON DUPLICATE KEY UPDATE上为MySQL中的键“ PRIMARY”给出重复的条目“ x”?

  26. 26

    INSERT INTO... ON DUPLICATE KEY UPDATE 不更新 PHP 和 mySQL 中的重复值

  27. 27

    php ON DUPLICATE KEY UPDATE 还说 1062: Duplicate entry for key 'PRIMARY'

  28. 28

    在SQLITE Android中模拟DUPLICATE KEY UPDATE

  29. 29

    ON DUPLICATE KEY UPDATE用新值更新

热门标签

归档