我有一个电影数据库,这个数据库包含几个带有列的表,我正在尝试插入带有关系数据的新电影。我想弄清楚如何将电影放入数据库,并设置电影实际所在的特定商店。想一想电影租赁系统,您想在其中搜索特定的电影并查找哪些商店有这部电影的存货。
我想插入一部新电影,并将库存水平设置为现有商店 ID。稍后我应该能够搜索这部电影,并能够读取每个商店 ID 的库存水平。
这是我到目前为止尝试过的 sql 查询之一,
BEGIN TRANSACTION
INSERT INTO [dbo].[movies]
([titel], [rating], [genre], [releasedatum],
[land], [sprak], [DVD_Bluray], [imdb_id])
VALUES
('Resident Evil 2', 4, 'Action', '2016-06-10',
'USA', 'Engelska', 'DVD', '123456987')
SELECT prodID
FROM dbo.movies
INSERT INTO dbo.lagerstatus_butiker (butiksid) VALUES (35)
COMMIT TRANSACTION
我的表 Movies
包含有关电影的信息,每部电影的主键是自动递增的 prodID
,lagerstatus_butiker
是 stocklevel对于每个商店。 Butiksid
是 storeID
并且是名为“butiker”(瑞典语中的商店)的单独表中的主键。我有多家商店,具有唯一的主键 ID。
如何在 Movies
中插入一个新行,同时使其属于具有库存水平的特定商店?
我的电影表是这样的:
[titel]
[writer]
[rating]
[genre]
[prodID] <--- Primary key
[releasedatum]
[land]
[sprak]
[DVD_Bluray]
[imdb_id]
[director_id] <--- Foreign key
[butik_id] <--- Foreign key
[lagerstatus]
[actorID] <-- Foreign key
我的 lagerstatus
(库存水平)表如下所示:
[butiksid] <-- Foreign key
[prodID] <-- Foreign key
[lagerstatus]
最后,我的 butiker
(商店)表如下所示:
[butik_namn]
[butiksid] <-- Primary key
[gatuadress]
[postnr]
[postort]
[telnr]
请随意提出改进和更改建议,我正尝试在 SQL Server 2008 中学习这一点。这仅用于教育目的。
谢谢! :)
最佳答案
当您向具有 IDENTITY
列的表中插入一行时,您可以像这样获取新创建的标识值:
BEGIN TRANSACTION
INSERT INTO [dbo].[movies]
([titel], [rating], [genre], [releasedatum],
[land], [sprak], [DVD_Bluray], [imdb_id])
VALUES
('Resident Evil 2', 4, 'Action', '2016-06-10',
'USA', 'Engelska', 'DVD', '123456987')
DECLARE @NewID INT
-- get newly created ID
SELECT @NewID = SCOPE_IDENTITY();
现在您可以使用该 ID 来填充其他表格:
INSERT INTO dbo.lagerstatus_butiker (butiksid) VALUES (@NewID)
COMMIT TRANSACTION
关于sql - 将具有最后一个 ID 的关系数据插入 SQL Server 2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37880519/