1

2 つのテーブルがあり、1 つは呼び出されPROJETO (id_projeto, id_tipo_projeto, descr_projeto, versao_projeto)、もう1 つは呼び出されますTIPO_PROJETO (id_tipo_projeto, descricao_tipo)

両方のテーブルINSERTのフィールドが同じ値になるように、2 つのテーブルで同時に実行したいと考えています。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列があり、2番目のテーブルには主キーだけがあります。これはSCOPE_IDENTITYを使用して最初の挿入のIDに基づいて挿入されます。

2番目の挿入がエラーになった場合、トランザクションはロールバックされます。これは単なる予防策であり、if / elseステートメントにエラー処理を追加して、挿入が失敗したことを報告することができます。

于 2011-04-05T00:17:38.610 に答える
0

このStackoverflowの質問を参照してください:SQL Server:2つのテーブルに同時に挿入することは可能ですか?

于 2011-04-05T00:13:57.030 に答える