VB.Net使用唯一键更新MySQL

时间:2016-12-29 10:49:43

标签: mysql vb.net

我用一个唯一的密钥写入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脚本并让它处理插入,但这看起来很迂回,因为它可能只是语法我错了。

1 个答案:

答案 0 :(得分:1)

无论是在控制台中还是在VB.NET中输入,语法都是一样的.sql命令看起来应该是

INSERT INTO read_initial (`column1`, `column2`,) values (@column1value,@column2value) 
ON DUPLICATE KEY UPDATE  `column1` = values(column1)