반응형
MySQL에 익숙하다면 내 질문이 간단 할 수 있습니다. 저는 PostgreSQL SGBD에 익숙하고 PL / PgSQL 스크립트를 MySQL로 변환하려고합니다.
내가 가진 것은 다음과 같습니다.
delimiter //
CREATE TRIGGER pgl_new_user
AFTER INSERT ON users FOR EACH ROW
BEGIN
DECLARE m_user_team_id integer;
SELECT id INTO m_user_team_id FROM user_teams WHERE name = "pgl_reporters";
DECLARE m_projects_id integer;
DECLARE cur CURSOR FOR SELECT project_id FROM user_team_project_relationships WHERE user_team_id = m_user_team_id;
OPEN cur;
ins_loop: LOOP
FETCH cur INTO m_projects_id;
IF done THEN
LEAVE ins_loop;
END IF;
INSERT INTO users_projects (user_id, project_id, created_at, updated_at, project_access)
VALUES (NEW.id, m_projects_id, now(), now(), 20);
END LOOP;
CLOSE cur;
END//
하지만 MySQL Workbench에서 DECLARE m_projects_id
에 오류가 발생합니다. 위의 두 줄에 동일한 지침이 있기 때문에 정말 이해가되지 않습니다.
힌트가 있습니까?
편집 : neubert가이 오류를 해결했습니다. 감사.
그러나 사용자에게 삽입하려고 할 때 :
Error Code: 1329. No data - zero rows fetched, selected, or processed
당신은 어떤 생각이 있습니까? 아니면 더 나은 오류 메시지를 얻을 수있는 방법을 알고 있습니까?
해결 방법
모든 선언은 맨 위에 있어야합니다. 즉.
delimiter //
CREATE TRIGGER pgl_new_user
AFTER INSERT ON users FOR EACH ROW
BEGIN
DECLARE m_user_team_id integer;
DECLARE m_projects_id integer;
DECLARE cur CURSOR FOR SELECT project_id FROM user_team_project_relationships WHERE user_team_id = m_user_team_id;
SET @m_user_team_id := (SELECT id FROM user_teams WHERE name = "pgl_reporters");
OPEN cur;
ins_loop: LOOP
FETCH cur INTO m_projects_id;
IF done THEN
LEAVE ins_loop;
END IF;
INSERT INTO users_projects (user_id, project_id, created_at, updated_at, project_access)
VALUES (NEW.id, m_projects_id, now(), now(), 20);
END LOOP;
CLOSE cur;
END//
참조 페이지 https://stackoverflow.com/questions/15841455
반응형
'MySql' 카테고리의 다른 글
MySQL iOS 앱을 데이터베이스 (mySQL 및 Sequel Pro)에 연결하는 방법은 무엇입니까? (0) | 2021.01.06 |
---|---|
MySQL 의미? header ( 'P3P : CP = "IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); (0) | 2021.01.06 |
MySQL Php 고유 한 사용자 이름 보장 (0) | 2021.01.06 |
MySQL 미국 우편 번호에 가장 적합한 열 유형은 무엇입니까? (0) | 2021.01.06 |
MySQL ASP.NET MVC 4, 하나의보기에서 여러 모델? (0) | 2021.01.06 |
댓글