将带有最后一个id的关系数据插入SQL Server 2008

时间:2016-06-17 11:32:45

标签: sql database sql-server-2008

我有一个电影数据库,这个数据库包含几个带有列的表,我正在尝试插入带有关系数据的新电影。我试图弄清楚如何将电影放入数据库,并设置电影实际所在的特定商店。想想一个电影租赁系统,你想在那里搜索一部特定的电影,并找到哪些商店有这个特定的电影库存。

我想插入一部新电影,并将库存水平设置为现有商店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为每个商店的库存级别。 ButiksidstoreID,是一个名为' 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中学习这一点。这仅用于教育目的。

谢谢! :)

1 个答案:

答案 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