PostgreSQL Json Синтаксис - PullRequest
       79

PostgreSQL Json Синтаксис

0 голосов
/ 06 августа 2020

Я использую эту функцию для отслеживания изменений в базе данных.

CREATE FUNCTION public.NotifyOnDataChange()
RETURNS trigger
LANGUAGE 'plpgsql'
AS $BODY$ 
DECLARE
    data JSON;
    notification JSON;
BEGIN
-- if we delete, then pass the old data
-- if we insert or update, pass the new data
IF (TG_OP = 'DELETE') THEN
    data = row_to_json(OLD);
ELSE
    data = row_to_json(NEW);
END IF;

-- create json payload
-- note that here can be done projection 
notification = json_build_object(
        'table',TG_TABLE_NAME,
        'action', TG_OP, -- can have value of INSERT, UPDATE, DELETE
        'data', data);  
        
-- note that channel name MUST be lowercase, otherwise pg_notify() won't work
PERFORM pg_notify('datachange', notification::TEXT);
RETURN NEW;
END
$BODY$;

Результат выглядит так:

"{""table"" : ""um_user"", ""action"" : ""INSERT"", ""data"" : {""id"":5,""name"":""Marc"",""number"":25,""icon"":8,""admin"":false}}"

Интересно, почему они ставят двойные кавычки. Согласно https://jsonformatter.curiousconcept.com это недопустимый формат.

1 Ответ

0 голосов
/ 07 августа 2020

Позор мне.

Я обнаружил, что VisualStudio отображает эти двойные кавычки, когда указатель мыши находится над значением.

enter image description here

In Quick View everything is ok, no double quotes!

введите описание изображения здесь

Я много лет использую Visual Studio в качестве хобби, но никогда раньше не замечал этого.

...