在觸發器函式里面實作插入修改字串,但只能插入或修改數值,不能插入字串。
ttt1=' insert into table_test(select * from '||TG_TABLE_NAME|| ' WHERE tag_1 = ( SELECT max(tag_1)
FROM '||TG_TABLE_NAME|| ' )) ON conflict(tag_1) DO UPDATE SET tag_20 = 98989;';
EXECUTE ttt1; (正常執行修改插入98989)
ttt2=' insert into table_test(select * from '||TG_TABLE_NAME|| ' WHERE tag_1 = ( SELECT max(tag_1)
FROM '||TG_TABLE_NAME|| ' )) ON conflict(tag_1) DO UPDATE SET tag_20 =' ||test|| ;';
EXECUTE ttt2; (提示不存在欄位名 test,不能執行)
哪位高手大俠指導一下,資料庫版本是PG11版本。兩個腳本除過字串和數字不同其他一樣。希望實作無則插入有則修改字串。
uj5u.com熱心網友回復:
test 是什么變數? 如果是常量,請加單引號uj5u.com熱心網友回復:
tag_20 ='||'test' ||';';
添加了引號一樣的提示
(Reason: '錯誤: 欄位 "test" 不存在;Error while executing the query').
uj5u.com熱心網友回復:
你是要輸入字串常量test嗎?|| ' )) ON conflict(tag_1) DO UPDATE SET tag_20 =$$test$$ '
uj5u.com熱心網友回復:
沒看懂需求,如果想約束某個varchar列只允許插入數字,建個check就行轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/16726.html
標籤:PostgreSQL
