반응형
MariaDB 트리거에서 JSON_EXTRACT 사용
문장의 일부로 JSON_EXTRACT를 사용하는 INSERT 트리거를 MariaDB에 생성하려고 합니다.오류가 발생했습니다.
54행 오류 1305(42000): 기능 새로 고침.JSON_EXTRECT가 존재하지 않습니다.
설명서를 보니 트리거에서 JSON 사용에 제한이 있는지 확인할 수 없습니다.
다음은 문제를 보여주는 예입니다.보다시피 JSON_EXTRECT는 선택 시 잘 작동합니다.
DROP DATABASE IF EXISTS testdb;
CREATE DATABASE testdb;
USE testdb;
DROP TRIGGER IF EXISTS trig_test;
DROP TRIGGER IF EXISTS trig_works;
DROP TABLE IF EXISTS test1;
DROP TABLE IF EXISTS test2;
CREATE TABLE test1 (
tstamp DATETIME DEFAULT CURRENT_TIMESTAMP,
sense VARCHAR(32) NOT NULL,
readings JSON,
test_level INT,
CHECK (JSON_VALID(readings))
);
CREATE TABLE test2 (
sense VARCHAR(32) NOT NULL,
battery_level INT
);
INSERT INTO test1 (sense, test_level, readings) VALUES ('ST00', 80, '{ "level" : 73 }');
SELECT test_level, JSON_EXTRACT(readings, '$.level') FROM test1;
INSERT INTO test2 (sense) VALUES ('ST00');
DELIMITER #
CREATE TRIGGER trig_works AFTER INSERT ON test1
FOR EACH ROW
BEGIN
UPDATE test2
SET battery_level = NEW.test_level
WHERE sense = NEW.sense;
END;
#
DELIMITER ;
INSERT INTO test1 (sense, test_level, readings) VALUES ('ST00', 81, '{ "level" : 74 }');
SELECT test_level, JSON_EXTRACT(readings, '$.level') FROM test1;
SELECT * FROM test2;
DELIMITER #
CREATE TRIGGER trig_test AFTER INSERT ON test1
FOR EACH ROW
BEGIN
UPDATE test2
SET battery_level = NEW.JSON_EXTRACT(readings, '$.level')
WHERE sense = NEW.sense;
END;
#
DELIMITER ;
INSERT INTO test1 (sense, readings) VALUES ('ST00', '{ "level" : 73 }');
SELECT * FROM test2;
DROP TRIGGER IF EXISTS trig_test;
DROP TRIGGER IF EXISTS trig_works;
DROP TABLE IF EXISTS test1;
DROP TABLE IF EXISTS test2;
처리 방법은 다음과 같습니다. (부차적인 구문 변경)
UPDATE test2 SET battery_level = JSON_EXTRACT(NEW.readings, '$.level');
언급URL : https://stackoverflow.com/questions/58980095/using-json-extract-in-mariadb-trigger
반응형
'programing' 카테고리의 다른 글
스위프트에서 십진수를 이진수로 변환하는 방법은 무엇입니까? (0) | 2023.08.05 |
---|---|
jQuery를 사용하여 CSS "top" 및 "left" 특성 제거 (0) | 2023.08.05 |
href 속성이 없는 링크에서 작은 손을 어떻게 보여줄 수 있습니까? (0) | 2023.08.05 |
텍스트 파일에 문자열이 포함된 경우 PowerShell을 사용하여 텍스트 파일에서 줄 제거 (0) | 2023.08.05 |
Node.js HTTP 서버를 사용하여 단일 쿠키 가져오기 및 설정 (0) | 2023.08.05 |