2016-05-12 7 views
1

重複なしで新しい行を挿入したい。存在しない場合は挿入 - すべての列を参照

全体的なアイデアは、新しい行を挿入することであるindentical ペアは、すでにだけではなく、一つのキー存在しない場合にのみ、両方の列を意味する重複それを呼び出すために一緒に存在している必要があります。

parent_id | report_date 
1   | 2015-12-15 
1   | 2015-10-10 
(1   | 2015-10-10) NOT ALLOWED 
2   | 2011-05-04 
+2

候補キーを作成して一意制約を適用します。ユニークキー= parent_Id + report_Date。 – PyNoob

答えて

1

方法1:更新しようとした場合

ALTER TABLE `tablename` ADD UNIQUE `unique_index`(`parent_id`, `report_date`); 

一意のインデックスを追加します。今、クエリの実行は失敗します。

方法2:チェック

ベストソリューションを挿入しながらのコメントで@pyNoobによって示唆されているように一意のインデックスを追加することです。しかし、それができない場合、インデックス作成のためにディスクスペースが心配になるかもしれないとすれば、次のクエリが機能します: -

INSERT INTO tablename (parent_id, report_date) 
SELECT * FROM (SELECT '1', '2015-10-10') AS tmp 
WHERE NOT EXISTS (
    SELECT parent_id, report_date FROM tablename where parent_id = '1' and report_date = '2015-10-10' 
) LIMIT 1; 
関連する問題