我有 3 张桌子
Project
:ProjectID
(主键)Bugs
:ProjectID, BugID
(主键)BugLogs
:BugID, BugLogID
(主键)
有:
- 一个项目的多个错误
- 关于错误的多个错误日志
我将如何插入一个有错误的项目,然后将错误日志有效地记录到这些表中?
谢谢
我有 3 张桌子
Project
: ProjectID
(主键)Bugs
: ProjectID, BugID
(主键)BugLogs
: BugID, BugLogID
(主键)有:
我将如何插入一个有错误的项目,然后将错误日志有效地记录到这些表中?
谢谢
那么在这里你需要编写单独的插入语句。只有在查询数据时才会使用联接。
如果 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,....)
联接与插入无关。只有当您想要查询数据时,联接才会发挥作用。
如果您有声明性引用完整性,那么您将不得不按以下顺序插入记录:Project、Bugs、BugLogs。
如果您在 Microsoft SQL Server 中工作,并且正在使用标识列,则在插入一行后,您可以使用 scope_identity() 函数来检索分配的主键并使用它来设置外键。