CREATE TRIGGER
という名前の MySQL テーブルで最初のコーディングを行っていますItem
。
新しい行を INTO テーブルに INSERT し、その値をテーブルに INSERT するためにitemindustrycodeslookup
Max 値を取得したいと考えています。itemindustrycodeslookupId
Item
これが私がこれまでに持っているものです:
-- Trigger DDL Statements
DELIMITER $$
USE `nextcart`$$
CREATE TRIGGER `insert_itemindustrycodeslookupid`
BEFORE INSERT ON `item` FOR EACH ROW
BEGIN
INSERT INTO `itemindustrycodeslookup` SET `itemindustrycodeslookupId` = NULL;
#SELECT here..
#INSERT here...
END$$
その INSERT の後に別の INSERT が続く SELECT が必要ですか?
また、INSERT INTO
itemindustrycodeslookup SET
itemindustrycodeslookupIdについてもわかりません= NULL;
。自動インクリメントである PK id を除いて、すべての列を null にすることができますSET
。= NULL
**コードの更新: 区切り文字が正しいかどうかはまだわかりません。まだ [適用] ボタンを押す準備ができていませんが、すぐに適用されます。
-- Trigger DDL Statements
DELIMITER $$
USE `nextcart`$$
CREATE TRIGGER `insert_itemindustrycodeslookupid`
AFTER INSERT ON `item` FOR EACH ROW
BEGIN
DECLARE fk_id int;
Set fk_id = LAST_INSERT_ID();
INSERT INTO `itemindustrycodeslookup` SET `itemindustrycodeslookupId` = NULL;
UPDATE `item` SET `item`.`itemindustrycodeslookupId` = LAST_INSERT_ID() WHERE `item`.`itemId` = fk_id;
END$$
***最新のコード更新: これは機能し、Web からまとめて収集されました.. ポスターは「自己責任で使用する」と述べているため、より良い解決策があることを願っています。MySQL は、トリガーを起動した場合に独自のテーブルを更新することを好まないので... とにかく、DID の動作は次のとおりです。
-- Trigger DDL Statements
DELIMITER $$
USE `nextcart`$$
CREATE
DEFINER=`root`@`localhost`
TRIGGER `nextcart`.`insert_itemindustrycodeslookupid`
BEFORE INSERT ON `nextcart`.`item`
FOR EACH ROW
BEGIN
INSERT INTO nextcart.itemindustrycodeslookup SET itemindustrycodeslookupId = NULL;
SET NEW.itemindustrycodeslookupId = (
SELECT AUTO_INCREMENT - 1
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'itemindustrycodeslookup'
);
END$$
***解決策:これも機能することがわかりました。これは、以下の回答になる可能性があります..
-- Trigger DDL Statements
DELIMITER $$
USE `nextcart`$$
CREATE
DEFINER=`root`@`localhost`
TRIGGER `nextcart`.`insert_itemindustrycodeslookupid`
BEFORE INSERT ON `nextcart`.`item`
FOR EACH ROW
BEGIN
INSERT INTO nextcart.itemindustrycodeslookup SET itemindustrycodeslookupId = NULL;
SET NEW.itemindustrycodeslookupId = (
SELECT LAST_INSERT_ID());
END$$