我有一个电影数据库,这个数据库包含几个带有列的表,我正在尝试插入带有关系数据的新电影。我试图弄清楚如何将电影放入数据库,并设置电影实际所在的特定商店。想想一个电影租赁系统,你想在那里搜索一部特定的电影,并找到哪些商店有这个特定的电影库存。
我想插入一部新电影,并将库存水平设置为现有商店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
为每个商店的库存级别。 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中学习这一点。这仅用于教育目的。
谢谢! :)
答案 0 :(得分:2)
当您在具有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