Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions src/backend/sql/triggers/01301_order_item_audit_insert.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
-- -----------------------------------------------------
-- Trigger for AFTER INSERT on OrderItem table
-- -----------------------------------------------------
CREATE TRIGGER `trg_OrderItem_Audit_Insert`
AFTER INSERT ON `OrderItem`
FOR EACH ROW
BEGIN
INSERT INTO `AuditLog` (
`TableName`,
`RowPKValue`,
`OperationType`,
`ChangedByUserID`,
`OldValues_JSON`,
`NewValues_JSON`
)
VALUES (
'OrderItem',
CAST(NEW.OrderItemID AS CHAR), -- 主键值
'INSERT',
@actor_id, -- 从会话变量获取操作者ID
NULL, -- INSERT 操作没有旧值
JSON_OBJECT(
'OrderItemID', NEW.OrderItemID,
'OrderID', NEW.OrderID,
'ProductID', NEW.ProductID,
'StoreID', NEW.StoreID,
'Quantity', NEW.Quantity,
'PriceAtPurchase', NEW.PriceAtPurchase,
'ProductNameAtPurchase', NEW.ProductNameAtPurchase,
'ProductImageURLAtPurchase', NEW.ProductImageURLAtPurchase,
'Subtotal', NEW.Subtotal
)
);
END;
55 changes: 55 additions & 0 deletions src/backend/sql/triggers/01302_order_item_audit_update.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
-- -----------------------------------------------------
-- Trigger for AFTER UPDATE on OrderItem table
-- -----------------------------------------------------
CREATE TRIGGER `trg_OrderItem_Audit_Update`
AFTER UPDATE ON `OrderItem`
FOR EACH ROW
BEGIN
-- 只有当受监控的业务字段实际发生变化时才记录日志
IF OLD.OrderID <=> NEW.OrderID OR
OLD.ProductID <=> NEW.ProductID OR
OLD.StoreID <=> NEW.StoreID OR
OLD.Quantity <=> NEW.Quantity OR
OLD.PriceAtPurchase <=> NEW.PriceAtPurchase OR
OLD.ProductNameAtPurchase <=> NEW.ProductNameAtPurchase OR
OLD.ProductImageURLAtPurchase <=> NEW.ProductImageURLAtPurchase OR
OLD.Subtotal <=> NEW.Subtotal
THEN
INSERT INTO `AuditLog` (
`TableName`,
`RowPKValue`,
`OperationType`,
`ChangedByUserID`,
`OldValues_JSON`,
`NewValues_JSON`
)
VALUES (
'OrderItem',
CAST(NEW.OrderItemID AS CHAR), -- 主键值
'UPDATE',
@actor_id,
JSON_OBJECT(
'OrderItemID', OLD.OrderItemID,
'OrderID', OLD.OrderID,
'ProductID', OLD.ProductID,
'StoreID', OLD.StoreID,
'Quantity', OLD.Quantity,
'PriceAtPurchase', OLD.PriceAtPurchase,
'ProductNameAtPurchase', OLD.ProductNameAtPurchase,
'ProductImageURLAtPurchase', OLD.ProductImageURLAtPurchase,
'Subtotal', OLD.Subtotal
),
JSON_OBJECT(
'OrderItemID', NEW.OrderItemID,
'OrderID', NEW.OrderID,
'ProductID', NEW.ProductID,
'StoreID', NEW.StoreID,
'Quantity', NEW.Quantity,
'PriceAtPurchase', NEW.PriceAtPurchase,
'ProductNameAtPurchase', NEW.ProductNameAtPurchase,
'ProductImageURLAtPurchase', NEW.ProductImageURLAtPurchase,
'Subtotal', NEW.Subtotal
)
);
END IF;
END;
34 changes: 34 additions & 0 deletions src/backend/sql/triggers/01303_order_item_audit_delete.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
-- -----------------------------------------------------
-- Trigger for AFTER DELETE on OrderItem table
-- -----------------------------------------------------
CREATE TRIGGER `trg_OrderItem_Audit_Delete`
AFTER DELETE ON `OrderItem`
FOR EACH ROW
BEGIN
INSERT INTO `AuditLog` (
`TableName`,
`RowPKValue`,
`OperationType`,
`ChangedByUserID`,
`OldValues_JSON`,
`NewValues_JSON`
)
VALUES (
'OrderItem',
CAST(OLD.OrderItemID AS CHAR),
'DELETE',
@actor_id,
JSON_OBJECT(
'OrderItemID', OLD.OrderItemID,
'OrderID', OLD.OrderID,
'ProductID', OLD.ProductID,
'StoreID', OLD.StoreID,
'Quantity', OLD.Quantity,
'PriceAtPurchase', OLD.PriceAtPurchase,
'ProductNameAtPurchase', OLD.ProductNameAtPurchase,
'ProductImageURLAtPurchase', OLD.ProductImageURLAtPurchase,
'Subtotal', OLD.Subtotal
),
NULL -- DELETE 操作没有新值
);
END;