如何在此表中插入新记录?

时间:2011-07-22 10:16:38

标签: sql insert

对不起这个noob问题我很抱歉。

There're 2 tables:较小的一个来自较大的一个。 如何将新记录插入更大的表格?

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

但是更大的表格包含城市作为数字。我该如何插入'巴黎'?我应该事先知道它的号码吗?但'巴黎'不在城市(小)表! 如何在更大的(人)表中插入记录?

3 个答案:

答案 0 :(得分:1)

修改

添加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'进行参数化。

答案 1 :(得分:0)

修改 采用城市表中现有条目的解决方案。正如我在评论中写的那样,可以省略事务(例如,当作为存储过程运行时)

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

答案 2 :(得分:0)

在人员表的插入中,城市列的值应该是您希望该人员链接到的城市的数量 - 因此在您引用的示例中,将“Paris”替换为巴黎的城市号。 / p>

如果您想创建一个城市表中尚不存在的城市的新人记录,您需要先在城市表中插入,获取已创建城市的编号,然后使用该编号在插入人员表中。