2011-04-05 33 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

相关问题