SQL Insert تجاهل: تخطي القيم في حالة خاصة
سؤال
أحاول تخطي 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_name
و col_type
استخدام شيء مثل:
ALTER TABLE my_table ADD UNIQUE(col_wood_name, col_type);
ولكن هذا غير مكتمل لأن هذا يجب أن يعمل فقط إذا col_type
هو 1
, ، كيف يمكنني ان احلها؟
المحلول
AFAIK ، لا توجد طريقة للقيام بذلك في استفسار واحد. استخدم الإجراءات المخزنة أو استعلام إضافي في التطبيق الخاص بك.
نصائح أخرى
كم عدد col_type مختلف ممكن؟
أسأل بسبب أسباب التصميم. إذا كان لديك فقط عمودين في الجدول ، فأنا لا أرى كيف سيكون من المفيد عدم القيام بالقيود الفريدة في الحقلين.
لا تنتمي إلى StackOverflow