0

我有 3 张桌子

  • Project: ProjectID(主键)
  • Bugs: ProjectID, BugID(主键)
  • BugLogs: BugID, BugLogID(主键)

有:

  • 一个项目的多个错误
  • 关于错误的多个错误日志

我将如何插入一个有错误的项目,然后将错误日志有效地记录到这些表中?

谢谢

4

2 回答 2

3

那么在这里你需要编写单独的插入语句。只有在查询数据时才会使用联接。

如果 bugid 是标识列,您可以执行以下操作:

DECLARE @bugid bigint
INSERT INTO Bugs (Projectid,other COLUMNS...)
VALUES (values1,VALUES....)

SELECT @bugid= SCOPE_IDENTITY()

INSERT INTO BugLogs(Bugid,other COLUMNS...)
VALUES(@bugid,....)

或者,您可以使用 Output 子句来获取 bugid。这将适用于所有场景:

DECLARE @bugid bigint
INSERT INTO Bugs (Projectid,other COLUMNS...)
OUTPUT INSERTED.BugId INTO @bugid
VALUES (values1,VALUES....)

INSERT INTO BugLogs(Bugid,other COLUMNS...)
VALUES(@bugid,....)
于 2013-05-08T12:42:47.447 回答
2

联接与插入无关。只有当您想要查询数据时,联接才会发挥作用。

如果您有声明性引用完整性,那么您将不得不按以下顺序插入记录:ProjectBugsBugLogs

如果您在 Microsoft SQL Server 中工作,并且正在使用标识列,则在插入一行后,您可以使用 scope_identity() 函数来检索分配的主键并使用它来设置外键。

于 2013-05-08T12:32:20.060 回答