我有两个表,一个名为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。
答案 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)
请参阅此Stackoverflow问题:SQL Server: Is it possible to insert into two tables at the same time?