sql - 将具有最后一个 ID 的关系数据插入 SQL Server 2008

标签 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 包含有关电影的信息,每部电影的主键是自动递增的 prodIDlagerstatus_butiker 是 stocklevel对于每个商店。 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 中学习这一点。这仅用于教育目的。

谢谢! :)

最佳答案

当您向具有 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/

相关文章:

xml - SQL Server XML 替换属性中的值

mysql - 按日期加入 SQL 查询

c# - 如何只比较 sql server 2008 中日期时间字段的年份?

sql-server - 如何将表移动到 MS SQL Server 中的另一个文件组?

mysql - 如何从两个表中提取数据但使用一个偏移量和一个排序选项?

java - 数据库 - 有 2 个表,需要另一个具有 ID 和另一个字段的表

php - mysql组之间的用户注册计数

sql - 填补稀疏数据中的日期空白

sql - 根据数据汇总今天和前一天的数据

sql - Access SQL : Nz() Function executed From VBD