1

以前の投稿「SELECT LAST_INSERT_ID() Not working with BIGINT on MySQL 5.6.11」 に続いて、新しい質問を投稿します。

いずれにせよ、さらに調査した結果、問題があったテーブルにトリガー BeforeInsert があったため、 LAST_INSERT_ID() が機能していないことがわかりました。

したがって、基本的に私の問題は、INSERT ステートメントの後に LAST_INSERT_ID() を呼び出すと、0 が返されることです。これは、このテーブルのトリガーとして BeforeInsert があるためです。このトリガーをコメントアウトすると、正常に機能し、LAST_INSERT_ID() によって正しい番号が返されます。

この問題を克服する方法はありますか? 以下はトリガーです

DELIMITER $$

USE `mydb`$$

CREATE
DEFINER=`root`@`%`
TRIGGER `mydb`.`Booking_BINS`
BEFORE INSERT ON `mydb`.`Booking`
FOR EACH ROW
-- Edit trigger body code below this line. Do not edit lines above this one

BEGIN

DECLARE iNextBookingId INT;
SET iNextBookingId = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE     TABLE_SCHEMA=DATABASE() AND TABLE_NAME='Booking');
SET NEW.BookingId = iNextBookingId; 

INSERT INTO AuditTrail  (AuditTrailId,UserId,ActionType,TableName,RowKey,FieldName,OldValue,NewValue,LoggedOn) VALUES
(UUID(),NEW.LastChangedBy,'INSERT','Booking',NEW.BookingId,'HotelId',NULL,NEW.HotelId,NOW()),
(UUID(),NEW.LastChangedBy,'INSERT','Booking',NEW.BookingId,'AgentId',NULL,NEW.AgentId,NOW()),
(UUID(),NEW.LastChangedBy,'INSERT','Booking',NEW.BookingId,'SupplierId',NULL,NEW.SupplierId,NOW());


 END$$
4

1 に答える 1