1
campign_id
列の同じ値を持つ行が存在しない限り、新しい行をMySQLテーブルに挿入しようとしています。この場合、行を更新したいと思います。 私のクエリは次のとおりです。次のようにMySQL ON DUPLICATE KEY UPDATE新しい行を挿入します
INSERT INTO prv_campaigns SET
website_id = %s,account_id = %s,campaign_id = %s,campaign_name = %s,start_date = %s,
end_date = %s,targeting_type = %s,enabled = %s,status = %s,bid_type = %s,
default_bid = %s,min_bid = %s,max_bid = %s,budget = %s,cost = %s,ctr = %s,
utm_codes = %s,country_codes = %s,country_targeting = %s,opt = %s,
device_targeting = %s,language_targeting = %s,exclude_low_volume = %s
ON DUPLICATE KEY UPDATE
campaign_name = %s,
start_date = %s,
end_date = %s,
targeting_type = %s,
enabled = %s,
status = %s,
bid_type = %s,
default_bid = %s,
min_bid = %s,
max_bid = %s,
budget = %s,
cost = %s,
ctr = %s,
utm_codes = %s,
country_codes = %s,
country_targeting = %s,
opt = %s,
device_targeting = %s,
language_targeting = %s,
exclude_low_volume
とテーブル構造は次のとおりです。
CREATE TABLE `prv_campaigns` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`creation_date` datetime DEFAULT CURRENT_TIMESTAMP,
`modification_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`website_id` int(11) DEFAULT '0',
`account_id` int(11) DEFAULT NULL,
`campaign_id` varchar(100) NOT NULL,
`campaign_name` varchar(256) NOT NULL,
`start_date` varchar(45) DEFAULT NULL,
`end_date` varchar(45) DEFAULT NULL,
`targeting_type` varchar(45) DEFAULT NULL,
`enabled` varchar(45) DEFAULT NULL,
`status` varchar(45) DEFAULT NULL,
`bid_type` varchar(45) DEFAULT NULL,
`default_bid` varchar(45) DEFAULT NULL,
`min_bid` varchar(45) DEFAULT NULL,
`max_bid` varchar(45) DEFAULT NULL,
`budget` varchar(45) DEFAULT NULL,
`cost` varchar(45) DEFAULT NULL,
`ctr` varchar(45) DEFAULT NULL,
`utm_codes` varchar(256) DEFAULT NULL,
`country_codes` json DEFAULT NULL,
`country_targeting` varchar(45) DEFAULT NULL,
`opt` varchar(45) DEFAULT NULL,
`device_targeting` json DEFAULT NULL,
`language_targeting` json DEFAULT NULL,
`exclude_low_volume` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ndx` (`website_id`,`account_id`,`campaign_id`,`campaign_name`)
) ENGINE=InnoDB AUTO_INCREMENT=14334 DEFAULT CHARSET=utf8$$
は、今私は、はっきりcampaign_id
がUNIQUE KEYであることから、その後、クエリの更新部分が行われることを間違って考えていました代わりに私のデータベースで作成された新しい行...どのようにこれを修正するためのアイデア? thx
は、私は、テーブルを変更することはできませんと仮定すると、私が提示したクエリに実装することができます解決策はありますか? –
@yarivbar。 。 。あんまり。 'campaign_id'が一意でなければならない場合は、それを宣言する必要があります。 –