我想在单个语句中创建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表中该特定设备的计数
答案 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"来自回应的价值。
为什么不在问之前先试试?