ID
既存の 3 つの列 ( 、Type
、Year
) の組み合わせが一意でない場合にのみ、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 の世界ではかなり一般的なケースだと思いますが、簡単な解決策が見つかりませんでした。