将最后一个id为的关系数据插入SQL Server 2008
我有一个电影数据库,这个数据库包含几个带列的表,我正在尝试插入带有关系数据的新电影。我试图找出如何将电影放入数据库,并在电影的物理位置设置一个特定的存储。想象一下电影租赁系统,在那里你想搜索一部特定的电影,并找到哪些商店有这部特定电影的存货 我想插入一部新电影,并将库存水平设置为现有商店id。我应该能够在以后搜索此电影,并能够读取每个商店id的库存水平 这是我迄今为止尝试过的sql查询之一将最后一个id为的关系数据插入SQL Server 2008,sql,database,sql-server-2008,Sql,Database,Sql Server 2008,我有一个电影数据库,这个数据库包含几个带列的表,我正在尝试插入带有关系数据的新电影。我试图找出如何将电影放入数据库,并在电影的物理位置设置一个特定的存储。想象一下电影租赁系统,在那里你想搜索一部特定的电影,并找到哪些商店有这部特定电影的存货 我想插入一部新电影,并将库存水平设置为现有商店id。我应该能够在以后搜索此电影,并能够读取每个商店id的库存水平 这是我迄今为止尝试过的sql查询之一 BEGIN TRANSACTION INSERT INTO [dbo].[movies]
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\u butiker
是每个商店的库存水平Butiksid
是storeID
并且是名为“butiker”(瑞典语存储)的单独表中的主键。我有多个存储区,具有唯一的主键ID
如何在电影
中插入新行,同时使其属于具有库存级别的特定商店
我的电影表如下所示:
[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
[butiksid] <-- Foreign key
[prodID] <-- Foreign key
[lagerstatus]
[butik_namn]
[butiksid] <-- Primary key
[gatuadress]
[postnr]
[postort]
[telnr]
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();
最后,我的butiker
(stores)表如下所示:
[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
[butiksid] <-- Foreign key
[prodID] <-- Foreign key
[lagerstatus]
[butik_namn]
[butiksid] <-- Primary key
[gatuadress]
[postnr]
[postort]
[telnr]
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();
[butik_namn]
[butiksid]当您将一行插入到具有标识
列的表中时,您可以像下面这样获取新创建的标识值:
[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
[butiksid] <-- Foreign key
[prodID] <-- Foreign key
[lagerstatus]
[butik_namn]
[butiksid] <-- Primary key
[gatuadress]
[postnr]
[postort]
[telnr]
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填写其他表格:
[butik_id]在电影中,它的含义是什么?为什么不在插入中设置?您可以使用存储过程吗?@tgolisch可以,我可以使用过程。你有好的吗?@Serg[butik_id]在英语中的意思是store_id。我试图与“butiker”表(stores)建立直接关系。我可能需要重新思考,并根据社区能想出的想法来改变这一点。:)我的意思是,lagerstatus
是m-mbutiker
与movies
的关系。那么,在许多可能的butiker
s电影中,哪一部呢。但是K_id
是指?啊,这看起来是合法的。当我回到数据库时,我会尝试一下,SCOPE\u IDENTITY相当于MySQL的最后一个\u INSERT\u ID,那么?@ChristerJohansson:因为我不知道MySQL,所以我不能真正评论-SCOPE\u IDENTITY
只返回插入当前作用域的最后一个IDENTITY值