source

구문 오류 Maria에서 변수 선언 오류DB

manysource 2023. 11. 1. 22:26

구문 오류 Maria에서 변수 선언 오류DB

다음 쿼리에 문제가 있습니다.

START TRANSACTION;
INSERT INTO posts
(
-- not relevant
)
VALUES
(
-- insert works as intended
);
COMMIT WORK AND CHAIN;

DECLARE @insertId INT; -- this is where i get the syntax error
SET @insertId = LAST_INSERT_ID();

UPDATE posts
SET guid = CONCAT('foo.bar?p=', @insertId)
WHERE id = @insertId;

-- continue to work with the variable
INSERT INTO postmeta(post_id, key, value)
VALUES
(@insertId, ..., ...),
(@insertId, ..., ...),
(@insertId, ..., ...),
(@insertId, ..., ...);
COMMIT WORK;

기본적으로 행을 삽입하며 삽입 직후 자동 증분 ID를 사용하여 업데이트해야 합니다(LAST_INSERT_ 함수에서 올바른 값을 얻을 수 있는지 확인합니다).ID). 그럼 자동 증분 ID를 사용해서 다른 테이블을 채워야 합니다.이 사용 사례에서는 값을 변수에 저장해야 한다고 생각했습니다.다음 오류 메시지가 표시되는 이유는 무엇입니까?"SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 매뉴얼에서 1행의 'DEClare @insertId INT; SET @insertId = LAST_INSERT_ID()'에 가까운 구문을 사용할 수 있는지 확인하십시오." 프로시저나 사용자 정의 함수를 만들지 않는 것이 문제입니까?

빠르게 검색해보니 MariaDB 웹사이트(https://mariadb.com/kb/en/user-defined-variables/) :

"사용자 정의 변수 유형을 선언할 수 없으므로 CAST() 또는 CONVERT()를 사용하는 방법밖에 없습니다."

그들의 사이트에는 신고하지 않고 변수를 만드는 예시들이 있기 때문에 해결책은 신고 문구를 삭제하는 것일 뿐이라고 생각합니다.

이게 효과가 있었으면 좋겠네요, 전 마리아를 잘 몰라요.DB!

언급URL : https://stackoverflow.com/questions/60522562/syntax-error-declaring-variables-in-mariadb