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

时间:2015-06-15 03:53:46

标签: c# sql

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

这是Appliance_Location表

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)

);

这是Appliance_Count表

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)

);

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

不确定其他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阅读器并阅读" Id"来自回应的价值。

为什么不在问之前先试试?