簡體   English   中英

如何在此表中插入新記錄?

[英]How do i insert new record in this table?

我很抱歉這個菜鳥問題。

有 2 張桌子:較小的一張來自較大的一張。 如何將新記錄插入更大的表中?

INSERT INTO people (lname, fname, city, age, salary) VALUES (' Doe','John','Paris', '25','1000$' );

但更大的表包含城市作為數字。 我應該如何插入“巴黎”? 我應該事先知道它的號碼嗎? 但是“巴黎”不在城市(較小的)表中? 記錄如何插入到更大的(人)表中?

編輯:

添加了IF塊來檢查巴黎。

IF NOT EXISTS (SELECT 1 FROM City WHERE City = 'Paris')
Insert INTO City (City) VALUES ('Paris')

DECLARE @Cid int = (SELECT CityID FROM City WHERE City = 'Paris')

INSERT INTO people (lname, fname, city, age, salary) 
VALUES (' Doe','John', @cid, '25','1000$' )

我顯然對city表的結構做了一個假設。

您還可以使用@city變量對其進行參數化,並在代碼中的任何位置將其替換為'Paris'

編輯:采用城市表中現有條目的解決方案。 正如我在評論中所寫,可以省略事務(例如,作為存儲過程運行時)

BEGIN TRANSACTION
        DECLARE @city_id INT
        SELECT @city_id=id FROM city WHERE name='Paris'
        IF @city_id IS NULL
        BEGIN
            INSERT INTO city (name) VALUES ('Paris')
            SET @city_id=@@IDENTITY
        END
        INSERT INTO people (lname, fname, city, age, salary) VALUES ('Doe','John',@city_id, '25','1000$' );
END TRANSACTION

在插入到 people 表中,city 列的值應該是您希望此人鏈接到的城市編號 - 因此在您引用的示例中,將“Paris”替換為巴黎的城市編號。

如果您想創建一個新的人員記錄,其中城市表中尚不存在,您需要先插入到城市表中,獲取創建城市的編號,然后在插入中使用它到人桌。

暫無
暫無

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

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