2017-01-31 4 views
-1

電子メールと電話が一意でなければならないテーブルPerson(id、email、phone、firstName)があります。私が例(1、 "[email protected]"、null、 "test")を持っていて、同じデータを持つ新しい行を追加しようとすると、ユニークな列の電子メールが原因で問題が発生します。どの列が重複した問題の電子メールまたは電話を引き起こすかを理解することは可能ですか(この状況では、電子メール列を返すべきです)。MySQLは重複した(一意の)行を取得します

+1

例外メッセージは、どの列が一意のconstraitに違反しているかを示します。 – e4c5

+1

一意の制約を使用して制約に名前を付けると、MySQLは違反した制約の名前を返します。 –

+0

例外で返されますが、クエリの戻り値として返すことはできますか? – user5783530

答えて

0

別のテーブルからデータを挿入するときは、最初に両方のテーブルを結合して、一意制約に違反する行をすべて見つけることができます。

Select A.* 
FROM Data_That_Could_Violate_Your_Constraint A 
INNER JOIN Person B 
ON(A.phone=B.phone or A.firstName = B.firstName) 

これは、彼らがphonefirstNameまたは両方で同じ値を共有しているため、インサート上のあなたの制約に違反するすべてのレコードを返します。

関連する問題