2015-06-15 176 views
1

我想在单个语句中创建插入和更新sql语句。但insert语句是一个表,UPDATE语句的另一个表...在单个sql语句中插入和更新sql语句

这是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表中特定设备应更新

+1

到目前为止你做了什么? – Ben

+0

检查'MERGE'语句;)。 –

回答

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”值之后。

为什么你不问之前就试试?

+0

我也在上面试过。但它没有工作.. –

+0

你是什么意思的“没有工作”?发生了什么?这是一个错误吗? –

+0

它不显示错误,但插入工作和更新不起作用 –

2

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

+0

感谢您的回复。 –