1
select dblink_exec('hostaddr=59.89.210.56 port=5432 dbname=mydb user=postgres password=****','insert into gtab04 (productid,product,itgrid,itemtype,patentid,taxid,convfact,boxpack,cntid )values (2301,''D PEARL 2000 Caps 10's'',4,2,7,3,10,'''',0)')

虽然 exe 此查询出现以下错误

ERROR:  syntax error at or near "s"
LINE 2: ...oxpack,cntid )values (2301,''D PEARL 2000 Caps 10's'',4,2,7,..

问题出在产品名称中,即我的产品名称是 D PEARL 2000 Caps 10's(我认为是问题所在)查询将其连接为“D PEARL 2000 Caps 10's”<-这是问题所在

4

3 回答 3

1

我希望这能帮到您,

创建或替换函数 create_or_update_test_employee_table() 将触发器返回为 $_$
宣布
    查询文字;
    fname 文本;
    lname 文本;
    id 整数;
    created_at 时间戳;
开始
    fname = NEW.first_name;
    lname = NEW.last_name;

    如果(TG_OP = '插入')然后
        id = 新的.id;
        query = '插入 test_employee(id, first_name, last_name) values(''' || id || ''',''' || fname || ''',''' || lname || ''' )';
        执行 dblink_exec('dbname=test_db',query);
        返回新的;
    万一;

    如果(TG_OP = '更新')那么
        id = OLD.id;
        查询 = '更新 test_employee 设置 first_name = ''' || 名称 || ''', 姓氏 = ''' || 名字 || ''' 哪里 id = ' || ID ||'';
        执行 dblink_exec('dbname=test_db',query);
        返回新的;
    万一;

    如果(TG_OP = '删除')然后
        PERFORM dblink_exec('dbname=test_db','DELETE FROM test_employee WHERE id = ' || OLD.id);
        回归旧;
    万一;

结束 $_$ 语言 'plpgsql';
于 2014-10-15T11:15:10.670 回答
0

Caps 10's应该是大写10''''s

您将 dblink 的单引号加倍,第二次将单引号加倍。

于 2014-03-16T23:47:06.107 回答
-1

转义单引号

D PEARL 2000 Caps 10\'\'s

于 2014-03-15T10:34:39.800 回答