我在mysql数据库中有以下表格:
项目
Column Type Null Default Links to Comments MIME
item_id (Primary) int(11) No
FK_item_category int(11) Yes NULL item_category -> item_category_id
item_name varchar(45) Yes NULL
item_description varchar(45) Yes NULL
item_price decimal(5,2) Yes NULL
item_category
Column Type Null Default Links to Comments MIME
item_category_id (Primary) int(11) No
item_category_name varchar(45) Yes NULL
顺序
Column Type Null Default Links to Comments MIME
order_id (Primary) int(11) No
FK_order_user_email varchar(45) Yes NULL user -> user_email
order_time datetime Yes CURRENT_TIMESTAMP
order_pickup_time time(6) Yes NULL
order_instructions varchar(45) Yes NULL
order_gross_total decimal(10,2) Yes NULL
order_net_total decimal(10,2) Yes NULL
order_detail
Column Type Null Default Links to Comments MIME
order_details_id (Primary) int(11) No
FK_order_id int(11) Yes NULL order -> order_id
FK_order_item_id int(11) Yes NULL item -> item_id
order_detail_unit_price decimal(5,2) Yes NULL
order_detail_quantity int(11) Yes NULL
我也有其他表,但我特意试图在这些表上创建一个触发器。
我正在尝试创建一个触发器,根据外键 fk_order_item_id 将 item_price 添加到 order_detail 表中。触发器将在插入后运行,并在更新后运行。
非常感谢任何帮助。感谢
答案 0 :(得分:0)
我建议不要以这种方式使用触发器。我认为应用程序服务是更新表的正确位置。如果必须在数据库中,则考虑使用存储过程。您应该考虑如何实现这些表的安全性。使用存储过程可能会有所帮助,因为您可以为用户授予过程的权限,但不能为表授予权限。
触发器可用于在插入或检查某些标准之前进行计算。
我相信您应用中的服务是解决您问题的最佳方案。它应该处理更新和安全性。在您的情况下,它可能需要多个服务。一个用于创建订单,可能一个用于在下订单后进行更新。也许是另一个删除订单等...