SQL: 트리거 및 프로시저
저는 물품 목록이 있는 테이블 « 블로그 »를 가지고 있습니다.저는 모든 항목의 댓글 수를 기재한 열을 추가하고 싶습니다.저는 이 번호도 자동으로 업데이트가 되었으면 합니다.
그래서 절차를 만들었습니다.
DELIMITER |
CREATE PROCEDURE Procedure_comments()
BEGIN
UPDATE blog SET nb_comment = (SELECT COUNT(Comment.id)
FROM Comment
WHERE Comment.blog_id = blog.id);
END|
댓글을 삽입/삭제할 때 «적으로 절차를 시작할 수 있는 트리거를 추가하려고 했습니다.
CREATE TRIGGER trigger_nb_comments
AFTER INSERT ON Comment
FOR EACH ROW EXECUTE Procedure_comments()|
그러나… 오류가 발생했습니다:
오류 1336 (0A000):저장된 함수 또는 트리거에서 동적 SQL이 허용되지 않습니다.
그럼… 메인 테이블 « 블로그 »의 댓글 수를 자동으로 업데이트하려면 어떻게 해야 합니까?
도와주셔서 정말 감사합니다.
제안한 트리거가 다시 계산/업데이트됩니다.nb_comment
사용자가 주석을 삽입하고 주석 삭제를 처리하지 않을 때마다 블로그 테이블의 모든 행에 적용됩니다.
트리거 대신 간단한 보기를 사용하는 것이 좋습니다.
CREATE VIEW vw_blog
AS
SELECT b.id, b.title, b.body,
COUNT(*) AS nb_comment
FROM blog b
JOIN `Comment` c
ON b.id = c.blog_id
GROUP BY b.id, b.title, b.body;
출력:
╔═════╦════════════════════╦═══════════════════════════════════╦════════════╗
║ id ║ title ║ body ║ nb_comment ║
╠═════╬════════════════════╬═══════════════════════════════════╬════════════╣
║ 1 ║ SQL Server ║ SQL Server... ║ 3 ║
║ 2 ║ MySQL performance ║ To improve performance invest... ║ 1 ║
╚═════╩════════════════════╩═══════════════════════════════════╩════════════╝
언급URL : https://stackoverflow.com/questions/35803088/sql-trigger-and-procedure
'programing' 카테고리의 다른 글
삽입 시 외국 키 테이블에 고유 레코드 삽입 (0) | 2023.10.21 |
---|---|
패키지/프로시저 외부에서 Oracle 연관 배열 유형을 생성할 수 있습니까? (0) | 2023.10.21 |
스트레이트 C 프로그램에서 오류 처리에 좋은 숙어가 있습니까? (0) | 2023.10.21 |
엔티티 프레임워크 6 무료 오라클 데이터 프로바이더 (0) | 2023.10.21 |
wocommerce 한 페이지에 카트 버튼에 추가 후 컨텐츠 추가 (0) | 2023.10.21 |