I have a trigger on my stock movements table and am trying to update the stock table using it. However once the first record gets written to movements any additional records throws the above error.
Not sure how to resolve it.
See below SQL
DROP TRIGGER IF EXISTS `trigUpdateStock`;
DELIMITER $$
CREATE TRIGGER `trigUpdateStock` AFTER INSERT ON `material_document`
FOR EACH ROW BEGIN
SELECT COUNT(MATERIAL) INTO @count FROM `stock` WHERE MATERIAL = NEW.MATERIAL
AND BATCH = NEW.BATCH;
IF @count > 0 THEN
SELECT `MATERIAL`, `BATCH`, `ST_STATUS`, `CONSIGN`, `LOCATION`, `STOCKIST`, `CUSTOMER`, `VENDOR`, `QUANTITY`, `UOM`, `COST`, `VALUE`, `CURRENCY`, `ENTRY_DATE`, `ENTRY_TIME`
INTO @mat, @batch, @st_status, @cons, @loc, @stkist, @cust, @vend, @qty,
@qty, @uom, @cost, @val, @curr, @date, @time
FROM `stock`
WHERE `MATERIAL` = NEW.MATERIAL
AND `BATCH` = NEW.BATCH;
SET @qty = @qty + NEW.QUANTITY;
SET @val = @val + NEW.VALUE;
SET @cost = @cost + NEW.COST;
UPDATE `stock` SET `QUANTITY` = @qty,
`VALUE` = @val,
`COST` = @cost
WHERE `MATERIAL` = NEW.MATERIAL
AND `BATCH` = NEW.BATCH;
ELSE
SELECT ST_STATUS INTO @st_status
FROM document_type
WHERE DOC_TYPE = NEW.DOC_TYPE;
INSERT INTO `stock` (`MATERIAL`, `BATCH`, `ST_STATUS`, `CONSIGN`, `LOCATION`, `STOCKIST`, `CUSTOMER`, `VENDOR`, `QUANTITY`, `UOM`, `COST`, `VALUE`, `CURRENCY`, `ENTRY_DATE`, `ENTRY_TIME`)
VALUES (NEW.MATERIAL, NEW.BATCH, @st_status, NEW.CONSIGN, NEW.LOCATION, NEW.STOCKIST, NEW.CUSTOMER, NEW.VENDOR, NEW.QUANTITY, NEW.UOM, NEW.COST, NEW.VALUE, NEW.CURRENCY, NEW.ENTRY_DATE, NEW.ENTRY_TIME);
END IF;
END;$$
DELIMITER ;
You have select one less column in SELECT
statement
like you have 15 column selected
SELECT
MATERIAL
,BATCH
,ST_STATUS
,CONSIGN
,LOCATION
,STOCKIST
,CUSTOMER
,VENDOR
,QUANTITY
,UOM
,COST
,
VALUE
,CURRENCY
,ENTRY_DATE
,ENTRY_TIME
But you have specified 16 variable to hold
INTO @mat, @batch, @st_status, @cons, @loc, @stkist, @cust, @vend, @qty, @qty, @uom, @cost, @val, @curr, @date, @time
That's why it is giving error.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.