2015-06-15 175 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

感謝您的回覆。 –