我用一个唯一的密钥写入MySQL数据库。理想情况下,如果已存在具有该密钥的行,我只能更新我想要更新的列。看起来像:
CREATE FUNCTION archivefunction() RETURNS trigger
LANGUAGE plpgsql
AS $$
begin
insert into archive (pk, time, version, name)
values (old.pk, old.time, old.version, old.name);
return old;
end
$$
CREATE TRIGGER archivetrigger
BEFORE UPDATE ON items
FOR EACH ROW EXECUTE PROCEDURE archivefunction()
我一直试图为此找到vb.net变体。目前我正在运行截断并再次写入所有内容,但这显然不太理想。
目前插件我正在使用:
INSERT INTO read_initial(column1,column2) VALUES (%s, %s) ON DUPLICATE KEY UPDATE column1 = VALUES(column1value);
我尝试将CommandText更改为
Using SQLConnection As New MySqlConnection(myBuilder.ConnectionString)
Using sqlCommand As New MySqlCommand()
With sqlCommand
.CommandText = "INSERT INTO read_initial (`column1`, `column2`,) values (@column1value,@column2value)"
.Connection = SQLConnection
.CommandType = CommandType.Text
.Parameters.AddWithValue("@column1", "column1value")
.Parameters.AddWithValue("@column2", column2value)
但这似乎并不合适。我很欣赏这方面的任何指示。我唯一的另一个后备是通过套接字将所有内容发送到Python脚本并让它处理插入,但这看起来很迂回,因为它可能只是语法我错了。
答案 0 :(得分:1)
无论是在控制台中还是在VB.NET中输入,语法都是一样的.sql命令看起来应该是
INSERT INTO read_initial (`column1`, `column2`,) values (@column1value,@column2value)
ON DUPLICATE KEY UPDATE `column1` = values(column1)