C# 在单个sql语句中插入和更新sql语句

C# 在单个sql语句中插入和更新sql语句,c#,sql,C#,Sql,我想在单个语句中创建insert和update sql语句。但insert语句用于一个表,update语句用于另一个表 这是您的位置表 CREATE TABLE [dbo].[Appliance_Location] ( [Appliance_Id] NCHAR (10) NOT NULL, [RoomId] NVARCHAR (20) NOT NULL, [ApplianceName] NCHAR (10) NOT NULL, [AddDate] DATE

我想在单个语句中创建insert和update sql语句。但insert语句用于一个表,update语句用于另一个表

这是您的位置表

CREATE TABLE [dbo].[Appliance_Location] (
[Appliance_Id]  NCHAR (10)    NOT NULL,
[RoomId]        NVARCHAR (20) NOT NULL,
[ApplianceName] NCHAR (10)    NOT NULL,
[AddDate]       DATE          NULL,
CONSTRAINT [PK_Appliance_Location] PRIMARY KEY CLUSTERED ([Appliance_Id] ASC)
))

这是设备计数表

CREATE TABLE [dbo].[Appliance_Count] (
[RoomId]   NVARCHAR (20) NOT NULL,`enter code here`
[Bulb]    INT           NOT NULL,
[Fan]     INT           NOT NULL,
[AC]       INT           NOT NULL,
[Computer] INT           NOT NULL,
CONSTRAINT [PK_Appliance_Count] PRIMARY KEY CLUSTERED ([RoomId] ASC)
))


当我将设备插入设备位置表时,设备计数表中该特定设备的计数应更新

不可能在单个查询中插入和更新。但是对于这项任务,您有一个选择。您可以创建触发器来插入一个表。并通过其他表中的更新值触发

不确定其他SQL服务器如何,但允许您使用MS SQL中的相同语法执行多个查询

using (SqlConnection connection = CreateConnection())
{   
    SqlCommand command = connection.CreateCommand();
    command.CommandText = @"INSERT INTO `TableA` VALUES (1, 2, 3); 
UPDATE `TableB` SET [Val] = 'value' WHERE [Id] > 10";
    command.CommandType = CommandType.Text;
    // ... other initializations

    return command.ExecuteNonQuery();
}
您甚至可以返回值:

INSERT INTO `TableC` VALUES (1, 'value');
SELECT SCOPE_IDENTITY() AS Id;
在此查询之后,您可以获取SQL reader并从响应中读取“Id”值


为什么不先试试再问?

到目前为止你做了什么?检查
MERGE
statement;)。你说的“没用”是什么意思?怎么搞的?这是一个错误吗?它不显示错误,但插入是有效的,更新是无效的