【问题标题】:How to insert data in database, without inserting duplicates? (vb.net)如何在数据库中插入数据,而不插入重复? (vb.net)
【发布时间】:2012-07-30 09:57:26
【问题描述】:

我一直在网上搜索,这个查询应该可以工作:

INSERT INTO Groep(Naam) SELECT ? WHERE NOT EXISTS (SELECT * FROM Groep Where Naam=?)

但它没有..我得到一个OleDbException:

关键字“DEFAULT”附近的语法不正确

【问题讨论】:

  • 什么数据库系统(以及哪个版本)?
  • 桌子上有触发器吗?您的错误消息似乎不适合您发送的语句。您还有其他需要值的字段吗?
  • 现在好了,不知道为什么,但它有效:) thx 的帮助!

标签: sql-server vb.net sql-server-2008


【解决方案1】:

假设数据库是 SQL Server ...

方法#1

创建唯一键

Alter Table TableName ADD CONSTRAINT ConstraintName PRIMARY KEY (ColumnName)


方法#2

If Not Exists(Select PrimaryKey From TableName Where ColumnName = 'Value')
Begin
    Insert Into TableName(Columns....)
    Values(......)
End

方法#3

Declare @Var int
select @Var = column1 from TableName Where Column2 = 'Value'
if(@Var is null)
Begin
    Insert Into TableName(Columns....)
    Values(......)
End

【讨论】:

  • 是的,它是 SQL Server 2008。我的表“组”只有 2 列:“Id”(PK)和“名称”前两种方法不起作用,我也没有完全理解方法#3,你的意思是我必须检查数据是否已经在数据库中(在 vb.net 代码中),然后如果它不在则添加它?感谢您迄今为止的帮助!
  • 你有一个电话Stored Procedure。 Appprocah #3 正在检查记录是否存在。如果是Null,应该插入记录。
【解决方案2】:

试试这个:

INSERT INTO TableName (ColumnName) SELECT '" + value + "' WHERE NOT EXISTS ( SELECT ColumnName from TableName WHERE Name = '" + value + "')";

后跟一个 ExecuteNonQuery()。

【讨论】:

  • 对不起,我以为你用的是 MySQL 服务器。我在上面编辑了我的答案。希望对您有所帮助。
  • 不幸的是它不起作用。也许这与我使用 OleDbParameters 的事实有关?感谢您的帮助
  • 你能把你的代码和错误放在这里吗?所以我可以得到更多的细节。
  • 现在好了,不知道为什么,但它有效:) thx 的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多