6

ID既存の 3 つの列 ( 、TypeYear) の組み合わせが一意でない場合にのみ、MySQL テーブルに新しい行を挿入したいと考えています。これらの 3 つの列が一致する場合、フィールド「Val」のみを更新します。

これはテーブルです:

 CREATE TABLE IF NOT EXISTS `Abs` (
 `ID` bigint(10) NOT NULL,
 `Type` int(11) NOT NULL,
 `Year` int(11) NOT NULL,
 `val` decimal(4,1) DEFAULT NULL, ....

そのため、複合インデックスを作成し、INSERT ON DUPLICATE KEY を使用して、IF THEN ブロックを保存しようとしました。

Type私のテーブルには= 0 の 行はありませんが、以下は何も挿入しないようです。

INSERT INTO `Abs` (`ID`, `Type`, `Year`, `Val`) VALUES (141, 0, 2013, 5) 
ON DUPLICATE KEY UPDATE `Val` = 5

これが私の複合インデックスです: ALTER TABLE Abs ADD PRIMARY KEY( ID,
Type, Year);

その場合の最善のアプローチは何でしょうか。これは RDB の世界ではかなり一般的なケースだと思いますが、簡単な解決策が見つかりませんでした。

4

0 に答える 0