gpt4 book ai didi

mysql - 从三个表中删除记录的存储过程

转载 作者:行者123 更新时间:2023-11-29 01:30:10 25 4
gpt4 key购买 nike

我是存储过程的新手,所以我需要你们的帮助,我有三个表 Event_Session、Event_Speaker、Session_Speaker。我想通过传递 Event_session_id 来删除 Event_Session 记录,它还应该同时删除 Session_Speaker 和 Event_Speaker 记录,请帮助我!这是表格

Event_Session(带字段的表)

Event_Session_Id, Session_name, Session_Description, Tags

Navigation Properties: Session_Speaker

Session_Speaker(带字段的表格)

Event_Session_Id, Event_Speaker_Id, created_date

Navigation properties: Event_Session , Event_Speaker

Event_Speaker(带字段的表格)

Event_Speaker_Id, Speaker_name, Created_date

Navigation Properties : Session_Speaker

最佳答案

你实际上需要一个 trigger Event_Session 表中的 DELETE 操作:

delimiter $$
CREATE TRIGGER Event_Session_Trigger
AFTER delete ON Event_Session
FOR EACH ROW
BEGIN

DELETE FROM Event_Speaker ss
WHERE
ss.Event_Speaker_Id = (
SELECT
Event_Speaker_Id
FROM Session_Speaker es
WHERE
es.Event_session_id = old.Event_session_id
)

DELETE FROM Session_Speaker es
WHERE
es.Event_session_id = old.Event_session_id

END$$
delimiter ;

更新:根据同义词程序的要求:

DELIMITER // 
CREATE PROCEDURE Event_Session_Procedure(IN Event_Session_Id_Delete INT)
BEGIN
DECLARE Event_Speaker_Id_Delete INT;

SELECT
Event_Speaker_Id INTO Event_Speaker_Id_Delete
FROM Session_Speaker es
WHERE
es.Event_session_id = Event_Session_Id_Delete

DELETE FROM Event_Session e
WHERE
e.Event_session_id = Event_Session_Id_Delete

DELETE FROM Session_Speaker es
WHERE
es.Event_session_id = Event_Session_Id_Delete

DELETE FROM Event_Speaker ss
WHERE
ss.Event_Speaker_Id = Event_Speaker_Id_Delete

END //
DELIMITER ;

您可以通过运行 CALL Event_Session_Procedure(123); 来执行它,其中 123 是您要删除的 Event_Session_Id

关于mysql - 从三个表中删除记录的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16955945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com