Я пытаюсь обновить / вставить данные в postgresql в зависимости от того, задан ли уже заданный идентификатор в таблице.
Это работает для обновления
UPDATE table SET
column=@Column
WHERE id=@Id;
И это также работает (жестко закодированозначения)
DO
$$
BEGIN
IF EXISTS (SELECT * FROM table WHERE id=123) THEN
UPDATE table SET
column=123
WHERE id=123;
ELSE
INSERT INTO table(id,column) VALUES (123,123);
END IF;
END
$$
Но как только я пытаюсь дать значения в качестве параметров, происходит сбой, выдавая ошибку Синтаксическая ошибка на уровне "= @"
DO
$$
BEGIN
IF EXISTS (SELECT * FROM table WHERE id=@Id) THEN
UPDATE table SET
column=@Column
WHERE id=@Id;
ELSE
INSERT INTO table(id,column) VALUES (@Id,@Column);
END IF;
END
$$
Чтобы изолировать проблему, оставив только один параметр, подобный этому
DO
$$
BEGIN
IF EXISTS (SELECT * FROM table WHERE id=@Id) THEN
UPDATE table SET
column=123
WHERE id=123;
ELSE
INSERT INTO table(id,column) VALUES (123,123);
END IF;
END
$$
Дает ошибку: Npgsql.PostgresException: '42703: столбец "id" не существует ".Так какое-то волшебство я должен делать с параметрами?