2011-04-05 48 views
1

我有兩個表,一個叫PROJETO (id_projeto, id_tipo_projeto, descr_projeto, versao_projeto)和另一個稱爲TIPO_PROJETO (id_tipo_projeto, descricao_tipo)INSERT與不同表中的相同的數據

我想在同一時間執行在兩個表的INSERT,使得在兩個id_tipo_projeto場表格具有相同的值。

這是在表中存儲數據的一個例子...

Table PROJETO 
-------------------------------------------------------------- 
| id_projeto  = 1          | 
| **id_tipo_projeto = 5          | 
| descr_projeto  = 'design will be sought for the sector' | 
| versao_projeto = 1.0         | 
-------------------------------------------------------------- 

Table TIPO_PROJETO 
------------------------------------------- 
| **id_tipo_projeto = 5     | 
| descricao_tipo = 'Industrial Design' | 
------------------------------------------- 

可能有人請幫我寫這樣的查詢。我正在使用SQL Server。

回答

1

這將得到更好的順序執行的,在一個事務中。希望在同一時間插入是不現實的。

DECLARE @id INT 

BEGIN TRANS 

    INSERT INTO [PROJETO] 
     (id_projeto, descr_projeto, versao_projeto) 
    VALUES 
     (1,'design ... etc', 1.0) 

    SET @id = SCOPE_IDENTITY() 

    INSERT INTO [TIPO_PROJETO] 
     (id_tipo_projeto, descricao_tipo) 
    VALUES 
     (@id, 'Idustrial Design') 

    IF @@ERROR <> 0 
     ROLLBACK TRANS 

COMMIT TRANS 

第一個表應該有一個主鍵標識列,第二隻是一個主鍵,這將基於使用SCOPE_IDENTITY所述第一插入件的ID被插入。

如果第二次插入錯誤,事務將被回滾。這只是預防措施,您可以將錯誤處理添加到if/else語句以報告插入失敗。

+0

字段id_tipo_projeto表PROJECT呢?在你的示例代碼中,它不再出現。 – 2011-04-05 13:40:22

+0

非常感謝!是工作 – 2011-04-06 02:53:34

相關問題