0
0
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
#1
少し改良できたので、追記します。
DROP TABLE IF EXISTS tbl; CREATE TABLE IF NOT EXISTS tbl (col1 char, col2 varchar, col3 text);
CREATE OR REPLACE FUNCTION fnc() RETURNS TRIGGER AS $$
DECLARE
cur CURSOR FOR SELECT key, value FROM json_each_text(to_json(NEW))
WHERE EXISTS (SELECT NULL FROM information_schema.columns
WHERE table_schema = TG_TABLE_SCHEMA AND table_name = TG_TABLE_NAME
AND column_name = key AND is_nullable = 'YES'
AND (data_type = 'character' AND trim(value) = ''
OR data_type IN ('character varying', 'text') AND value = ''));
BEGIN
FOR rec IN cur LOOP
NEW = json_populate_record(NEW, json_build_object(rec.key, NULL));
END LOOP;
RETURN NEW;
END
$$ LANGUAGE plpgsql;
CREATE OR REPLACE TRIGGER trg BEFORE INSERT OR UPDATE ON tbl FOR ROW EXECUTE PROCEDURE fnc();
INSERT INTO tbl VALUES ('', '', ''), (' ', ' ', ' '); SELECT COALESCE(col1, 'null'), COALESCE(col2, 'null'), COALESCE(col3, 'null') FROM tbl;
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。