簡體   English   中英

如果mysql中不存在,則插入記錄

[英]Insert record if not exists in mysql

可能這個問題被問過很多次了,但對我來說不起作用。

表架構

CREATE TABLE `tasks_taskstatus` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(40) NOT NULL,
  `video_status` tinyint(1) NOT NULL,
  `creative_status` tinyint(1) NOT NULL DEFAULT '0',
  `missing_asset` tinyint(1) NOT NULL,
  `is_finished` tinyint(1) NOT NULL,
  `share_with_am` tinyint(1) NOT NULL,
  `ordering` smallint(6) NOT NULL,
  `ready_to_begin` tinyint(1) NOT NULL,
  `in_progress` tinyint(1) NOT NULL,
  `is_conformed` tinyint(1) NOT NULL,
  `order_item_equivalent` varchar(60) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=latin1;

如果它尚不存在,我需要在mysql數據庫中插入一條記錄,以下是我嘗試使用的查詢。

    INSERT IGNORE INTO `tasks_taskstatus` 
SET `name`='Saveout - In Progress', 
`video_status`=1, 
`creative_status`=0, 
`missing_asset`=0, 
`is_finished`=0, 
`share_with_am`=0, 
`ordering`=4, 
`ready_to_begin`=0, 
`in_progress`=1, 
`is_conformed`=0, 
`order_item_equivalent`='';

但是,每當我運行此查詢時,都會創建一條新記錄,因此上述語句出了什么問題?如何修改上述查詢,以便僅在不存在的情況下插入數據/記錄?

您無需INSERT id (這是您的主鍵),因此AUTO_INCREMENT插入並生成新ID,並插入新記錄。

問問你自己:如何將MySQL的知道要更新記錄? 如果您知道(示例答案可能是“按name ”),則可以更改密鑰,這應該可以工作。

如果namevideo_status的組合必須唯一,請創建一個額外的鍵:

ALTER TABLE `tasks_taskstatus` ADD UNIQUE(`name`, `video_status`);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM