1

我有两张桌子,一张叫PROJETO (id_projeto, id_tipo_projeto, descr_projeto, versao_projeto),另一张叫TIPO_PROJETO (id_tipo_projeto, descricao_tipo)

我想同时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。

4

2 回答 2

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

第一个表应该有一个主键标识列,第二个只是一个主键,它将根据第一个插入的 ID 使用 SCOPE_IDENTITY 插入。

如果第二次插入出错,事务将被回滚。这只是预防措施,您可以在 if/else 语句中添加错误处理以报告插入失败。

于 2011-04-05T00:17:38.610 回答
0

请参阅此 Stackoverflow 问题:SQL Server:是否可以同时插入两个表?

于 2011-04-05T00:13:57.030 回答