我有3张桌子
Project
:ProjectID
(主键)Bugs
:ProjectID, BugID
(主键)BugLogs
:BugID, BugLogID
(主键)有:
我如何插入一个有bug的项目然后bug将bug有效地记录到这些表中?
谢谢
答案 0 :(得分: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,....)
答案 1 :(得分:2)
联接与插入无关。只有在您想要查询数据时才能使用联接。
如果您具有声明性参照完整性,那么您将必须按以下顺序插入记录:项目,错误, BugLogs < /强>
如果您使用的是Microsoft SQL Server,并且正在使用标识列,则在插入行之后,可以使用scope_identity()函数检索分配的主键,并使用它来设置外键。