在不同的表中插入相同的数据

时间:2011-04-05 00:10:42

标签: sql-server insert sql-insert

我有两个表,一个名为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。

2 个答案:

答案 0 :(得分: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语句中添加错误处理,以报告插入失败。

答案 1 :(得分:0)