簡體   English   中英

插入兩個表並影響其中一個表列的ID到另一個表中

[英]Insert into two tables and affect the id of one of the table columns into the other table

我有一個包含以下項的文件夾表

id    | name       | state    | imageFolder                
-------------------------------------------
1        NameTest       1           2 

我還有一個叫做“圖片”的圖片,其中包含

  id    | url                     
  --------------------------------------------
    2     https://www.someImageUrl

我想在查詢的文件夾表中插入一個url並將其放在圖像中,並在同一查詢中獲取id。 實際上,我正在一個android項目中,我必須添加一個新文件夾並將圖像上傳到它,因此這就是為什么我需要這個。 有辦法嗎?

您將要使用SCOPE_IDENTITY()捕獲由IMAGE表生成的鍵值。 有些人使用@@IDENTITY ,不要這樣做,它具有全局作用域, 有時您可能獲取錯誤的ID。

然后使用該值插入FOLDER表。 首先插入IMAGE表有點后退,但這是您獲取所需ID 這是一個功能齊全的示例:

IF OBJECT_ID('IMAGE') IS NOT NULL
    DROP TABLE [IMAGE]

CREATE TABLE [dbo].[IMAGE](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [url] [varchar](50) NOT NULL,
 CONSTRAINT [PK_IMAGE] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

IF OBJECT_ID('FOLDER') IS NOT NULL
    DROP TABLE [FOLDER]

CREATE TABLE [dbo].[FOLDER](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [name] [varchar](50) NOT NULL,
    [state] [int] NOT NULL,
    [image_id] [int] NOT NULL,
 CONSTRAINT [PK_FOLDER] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

DECLARE @IMAGE_ID INT

INSERT INTO IMAGE(url)
VALUES ('http://www.example.com')

SET @IMAGE_ID = SCOPE_IDENTITY()  --This is the key part

INSERT INTO FOLDER(NAME, STATE, IMAGE_ID)
VALUES ('NameTest', 1, @IMAGE_ID)

GO

SELECT * FROM IMAGE
SELECT * FROM FOLDER

結果:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM