3

製品説明の表を操作しようとしていますが、頭を悩ませています...
レコードの ID キーを検索するメソッド (php) があります。
検索条件に一致するものが存在しない場合、行を作成してその ID を返そうとします。

現在、SELECT はゼロ行を返していますが、同じ値の INSERT は重複エラーをスローしています。

SELECT `id`
FROM (`m3sandbox_product_description`)
WHERE `product_id` =  '403466'
AND `company_id` =  '5'
AND `value` =  'TERMINAL, FEMALE DISCONNECT, 6.3MM, RED; Connector Type:Female Disconnect; Insulator Color:Red; Termination Method:Crimp; Stud/Tab Size:6.35mm x 0.81mm; Wire Size (AWG):22AWG to 16AWG; Contact Material:Copper; Contact Plating:Tin ;RoHS Compliant: Yes'
LIMIT 1

.

INSERT INTO `m3sandbox_product_description`  (`product_id`, `company_id`, `value`, `datetime_created`)
VALUES  ('403466', '5', 'TERMINAL, FEMALE DISCONNECT, 6.3MM, RED; Connector Type:Female Disconnect; Insulator Color:Red; Termination Method:Crimp; Stud/Tab Size:6.35mm x 0.81mm; Wire Size (AWG):22AWG to 16AWG; Contact Material:Copper; Contact Plating:Tin ;RoHS Compliant: Yes', '2012-10-16T15:39:44+00:00')

結局のところ、当社の別の開発者は、この同じ DB に対してまったく異なるコード ベース (ただし同様のアプローチ) を使用しており、まったく同じ特有のハードルに直面しています。

SELECT が意図したとおりに動作するようにするために、記述値を使用してクエリを実行するために何か特別なことをする必要があります?

4

2 に答える 2

1

見つけた!!!!

ターミナル文字列の長さ

検索/挿入ステートメントの長いテキスト値は列のサイズを超えているため、その長い文字列を検索する場合は完全一致ではありませんが、挿入する場合は文字列の末尾が切り捨てられ、切り捨てられた新しい文字列完全に一致します。

これが将来誰かを助けることができることを願っています:)

于 2012-10-16T18:06:54.320 に答える
1

重複エントリは、使用されている他の値に関係なく、重複した主キーによってのみトリガーされます。product_id が主キー (?) の場合、別の値を持つ product_id = 403466 のレコードが存在する可能性がありますか?

于 2012-10-16T16:03:16.617 に答える