我想要以下两个表:
CREATE TABLE buildings
(
ID int IDENTITY NOT NULL PRIMARY KEY,
city_ID int NOT NULL REFERENCES(cities),
name char(20) NOT NULL
)
CREATE TABLE cities
(
ID int IDENTITY NOT NULL PRIMARY KEY,
name char(30) NOT NULL
)
INSERT INTO cities (name) VALUES ('Katowice')
现在我在写作时需要:
INSERT INTO buildings (city_ID,name) values (1,'bahnhof')
与我写作时的效果相同:
INSERT INTO buildings VALUES ('Katowice','bahnhof')
我的目的是,当我想要向城市添加建筑物时,我会考虑城市名称,而不是城市表中的ID。但有时我记得ID,然后我更喜欢使用ID。是否可以不创建程序?
我正在考虑适当的程序:
CREATE PROCEDURE addbuilding
@city_ID int,
@name char
AS
BEGIN
INSERT INTO buildings (city_ID,name) VALUES (@city_ID,@name)
END
但正如我们上面所见,@ city_ID只能是int。像C ++中的union这样的东西可能是一个很好的解决方案,但它可以在SQL中使用吗?
答案 0 :(得分:1)
我不确定SQL程序是否支持与C ++类似的联合,但我的建议是一个相当简单的:两个程序。
CREATE PROCEDURE add_building_by_city_id
@city_ID int,
@name char
etc
CREATE PROCEDURE add_building_by_city_name
@city_name char,
@name char
etc
然后你可以使用你需要的任何一个。当然,第二个程序首先需要一个简单的SELECT
,以便按名称查找城市并检索其ID。