对不起这个noob问题我很抱歉。
There're 2 tables:较小的一个来自较大的一个。 如何将新记录插入更大的表格?
INSERT INTO people (lname, fname, city, age, salary) VALUES (' Doe','John','Paris', '25','1000$' );
但是更大的表格包含城市作为数字。我该如何插入'巴黎'?我应该事先知道它的号码吗?但'巴黎'不在城市(小)表! 如何在更大的(人)表中插入记录?
答案 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>
如果您想创建一个城市表中尚不存在的城市的新人记录,您需要先在城市表中插入,获取已创建城市的编号,然后使用该编号在插入人员表中。