pgSQL: пытаюсь вставить в таблицу, используя метод dblink_exec(), но получаю следующую ошибку
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 (я думаю, что "решает проблему"), запрос выглядит как "D PEARL 2000 Caps 10" <- здесь проблема
3 ответа
Решение
Caps 10's
должны быть заглавные буквы 10''''s
Вы удваиваете одинарные кавычки для dblink один раз и для нахождения внутри строки во второй раз.
Я надеюсь, что это поможет вам,
функция создания или замены create_or_update_test_employee_table () возвращает триггер как $_$ объявлять текст запроса; текст имени; lname text; целое число id; метка времени созданного времени; начать fname = NEW.first_name; lname = NEW.last_name; IF (TG_OP = 'INSERT') THEN id = NEW.id; query = 'вставить в test_employee(id, first_name, last_name) значения (' '| || id || ''',''' || fname || ''',''' || lname || ''')'; PERFORM dblink_exec('dbname=test_db', запрос); ВЕРНУТЬ НОВЫЙ; END IF; IF (TG_OP = 'UPDATE') THEN id = OLD.id; query = 'update test_employee set first_name =' '' || имя || '' ', last_name =' '' || имя || '' 'ГДЕ id =' || id || ''; PERFORM dblink_exec ('dbname = test_db', запрос); ВЕРНУТЬ НОВЫЙ; END IF; IF (TG_OP = 'DELETE') THEN PERFORM dblink_exec ('dbname = test_db', 'DELETE FROM test_employee WHERE id = ' || OLD.id); ВОЗВРАТИТЬ СТАРЫЙ; END IF; end $_$ language 'plpgsql';