SQL INSERT IGNORE:在特殊情况下跳过值

时间:2010-08-17 17:41:28

标签: mysql insert ignore skip

我试图在特定情况下跳过INSERT,其中两个参与值中的一个是特定值:

// this can work if Beech allready exists
INSERT IGNORE INTO my_table (col_wood_name, col_type)
VALUES ("Beech", 0)

// this should be skipped if Beech allready exists with col_type = 1
INSERT IGNORE INTO my_table (col_wood_name, col_type)
VALUES ("Beech", 1)

my_table:
id      col_wood_name     col_type       other_column_1     other_column_2     etc_cols
1       Beech             0              ...                ...                ...
2       Fir               0              ...                ...                ...
3       Beech             1              ...                ...                ...
4       Pine              1              ...                ...                ...
5       Beech             1 // here is my problem, how can I avoid to insert a tree if col_type == 1?
6       Beech             0 // it's ok because col_type == 0

如果col_type == 1?

,如何避免插入树名?

我知道我可以使用以下内容在col_wood_namecol_type创建唯一键:

ALTER TABLE my_table ADD UNIQUE(col_wood_name, col_type);

但这是不完整的,因为只有在col_type1时这才有效,我该如何解决?

2 个答案:

答案 0 :(得分:0)

可能有多少种不同的col_type?

我问因为设计原因。如果表中只有两列,我没看到不对两个字段执行唯一约束会有什么好处。

答案 1 :(得分:0)

AFAIK,在一个查询中无法做到这一点。在您的应用程序中使用存储过程或其他查询。