开发者社区> 问答> 正文

如何防止 mysql 重复执行?

有时候 一条执行 被执行了2次

CREATE TABLE records (
id int(11) NOT NULL AUTO_INCREMENT,
id_user int(11) NOT NULL DEFAULT '0',
id_payRequest int(11) NOT NULL DEFAULT '0',
id_withdrawRequest int(11) NOT NULL DEFAULT '0',
id_refer int(11) NOT NULL DEFAULT '0',
id_order int(11) NOT NULL DEFAULT '0',
body_name varchar(255) NOT NULL,
body_direction int(1) NOT NULL DEFAULT '0',
body_stake decimal(8,2) NOT NULL DEFAULT '0.00',
created_at timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
updated_at timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
shop_id int(11) NOT NULL DEFAULT '0' COMMENT '购物订单ID',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=406325 DEFAULT CHARSET=utf8

帮看下 有哪里需要修改?

展开
收起
请教问题! 2017-11-23 16:13:23 2907 0
3 条回答
写回答
取消 提交回答
  • 一名路过的小码农,大神请多多指教

    可以在应用中生成id,或者通过专门的服务器来生成id,作为唯一标识,而不是采用自动增长

    2019-07-17 21:44:58
    赞同 展开评论 打赏
  • 可以根据实际的业务场景增加一个唯一索引(比如:我个人猜测id_user 和id_payRequest就可能是全局唯一的),然后插入的时候使用INSERT IGNORE或INSERT ... ON DUPLICATE KEY UPDATE 就可以防止插入两次

    2019-07-17 21:44:57
    赞同 展开评论 打赏
  • 是创建两次吗?改成不自动增加呢?

    2019-07-17 21:44:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像