在下面的示例中,我只想在没有的情况下插入表中 否则它会给PK违规。如何在mysql中进行条件插入。请注意我使用的是mysql db。
create table if not exists visa_amt_conversion (
last_char char(1) not null,
last_digit char(1) not null,
tran_sign char(1) not null,
primary key (last_char)
);
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('{', '0', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('A', '1', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('B', '2', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('C', '3', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('D', '4', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('E', '5', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('F', '6', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('G', '7', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('H', '8', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('I', '9', '+');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('}', '0', '-');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('J', '1', '-');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('K', '2', '-');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('L', '3', '-');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('M', '4', '-');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('N', '5', '-');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('O', '6', '-');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('P', '7', '-');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('Q', '8', '-');
insert into visa_amt_conversion (last_char, last_digit, tran_sign) VALUES ('R', '9', '-');
答案 0 :(得分:3)
执行此操作的标准方法如下:
insert into visa_amt_conversion (last_char, last_digit, tran_sign)
VALUES ('{', '0', '+')
on duplicate key update last_char = values(last_char);
如果尝试插入违反唯一键或主键约束的值,则会更新该行。 last_char = values(last_char))
是无操作。由于该值不会更改,因此甚至不会更新该行。
语法较短:
insert ignore into visa_amt_conversion (last_char, last_digit, tran_sign)
VALUES ('{', '0', '+');
在这种情况下,执行相同的操作 。但是,建议不要这样做,因为它会忽略所有错误。最好使用第一个版本,因为它只忽略您想忽略的特定错误。
答案 1 :(得分:0)
怎么样?
select count(last_char) from visa_amt_conversion;
如果该查询返回0,则表为空。如果您收到错误,表格不存在。