Asp.net SQL插入重复密钥更新无效

Asp.net SQL插入重复密钥更新无效,asp.net,sql-server,vb.net,Asp.net,Sql Server,Vb.net,我已经使用insert on duplicate key update创建了一个sql。我想知道为什么它不能插入或更新数据,并不断告诉我错误 下面是我的示例sql Insert Into tbAdminContact(ContactID,EmpID,Contact,SpeedDial,company,CreatedBy,CreatedDate ) Values( @Contactid,@EmpID,@Contact,@SpeedDial,@company,@createdby,conv

我已经使用insert on duplicate key update创建了一个sql。我想知道为什么它不能插入或更新数据,并不断告诉我错误

下面是我的示例sql

Insert Into tbAdminContact(ContactID,EmpID,Contact,SpeedDial,company,CreatedBy,CreatedDate ) 
    Values( @Contactid,@EmpID,@Contact,@SpeedDial,@company,@createdby,convert(datetime,@createddate,103)) 
    On Duplicate key Update Contact=values(@Contact), SpeedDial=values(@SpeedDial), UpdatedBy=values(@UpdatedBy), UpdatedDate=values(convert(datetime,@UpdatedDate,103))
错误代码

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

用这个

Update tbAdminContact set Contact=values(@Contact), SpeedDial=values(@SpeedDial), UpdatedBy=values(@UpdatedBy), UpdatedDate=values(convert(datetime,@UpdatedDate,103))
where ContactID=@Contactid

IF @@ROWCOUNT=0

Insert Into tbAdminContact(ContactID,EmpID,Contact,SpeedDial,company,CreatedBy,CreatedDate ) 
    Values( @Contactid,@EmpID,@Contact,@SpeedDial,@company,@createdby,convert(datetime,@createddate,103)) 

当然,您不能简单地将
ON
子句与
INSERT
一起使用。您可能希望使用
选择
加入
并将其所有结果与
插入
放在重复密钥更新上
是MySQL的一项功能。如果您使用的是SQL Server(一个完全不同的数据库),那么它将无法工作,因为没有任何其他查询能够与“在重复密钥更新时”类似?这取决于它的功能。也许您想使用
MERGE
而不是
INSERT
,后者允许您更新或插入。@Codexer AFAIK
MERGE
仍然受支持。可能过度使用:)您能引用一些指示它不受支持的内容吗?我没有否决,但如果是t-SQL(SQL Server),那么它的语法无效。