挿入時に自動生成される自動インクリメントされた「ID」主キーフィールドの値を別のフィールド「Sort_Placement」に割り当てるトリガーを作成して、挿入後も同じになるようにしようとしています。
なぜ私がこれを行っているのか疑問に思っているなら、「Sort_Placement」は変更可能なテーブルのソート値として使用されますが、デフォルトではレコードはテーブルの一番下に追加されます
表データ
`ID` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`Account_Num` mediumint(8) unsigned NOT NULL,
`Product_Num` mediumint(8) unsigned NOT NULL,
`Sort_Placement` mediumint(8) unsigned DEFAULT NULL,
`Order_Qty_C` smallint(6) NOT NULL DEFAULT '0',
`Order_Qty_B` smallint(6) NOT NULL DEFAULT '0',
`Discount` decimal(6,2) NOT NULL DEFAULT '0.00',
PRIMARY KEY (`ID`),
UNIQUE KEY `ID_UNIQUE` (`ID`)
トリガー挿入後
CREATE
TRIGGER `order_guide_insert_trigger`
AFTER INSERT ON `order_guide`
FOR EACH ROW
BEGIN
IF Sort_Placement IS NULL THEN
SET Sort_Placement = NEW.ID;
END IF;
END;
「NEW」プレフィックスを使用する組み合わせをたくさん試しましたが、うまくいきませんでした。たとえば、各フィールド名の前に NEW プレフィックスを付けます。
試してみる
INSERT INTO `order_guide` (`Account_Num`, `Product_Num`) VALUES ('5966', '3');
挿入エラー
ERROR 1054: Unknown column 'Sort_Placement' in 'field list'