[英]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
”),則可以更改密鑰,這應該可以工作。
如果name
和video_status
的組合必須唯一,請創建一個額外的鍵:
ALTER TABLE `tasks_taskstatus` ADD UNIQUE(`name`, `video_status`);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.