Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据名称从外键表中添加值_Sql_Key - Fatal编程技术网

Sql 根据名称从外键表中添加值

Sql 根据名称从外键表中添加值,sql,key,Sql,Key,我想要以下两张表: 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 ) INSE

我想要以下两张表:

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')
与我写作时的效果相同:

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

<> P>但是,正如我们可以看到的,CythyID只能是int。C++中的C++之类的东西可以是一个很好的解决方案,但是在SQL中,是否有可能?在SQL中?< /P> < P>我不确定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

然后你可以用你需要的任何一个。当然,第二个过程需要一个简单的
选择
,首先,根据城市名称查找城市并检索其ID。

很抱歉,但我认为没有过程是没有办法的。谢谢您的回答。我现在正在考虑程序。我怎么做?我将编辑我的帖子,更准确地描述我的问题。回答得很好,谢谢。不是从城市ID而是从城市名称来做参考,怎么样?我试过了,但没有成功——我有一些关于转换问题或类似问题的信息。不要这样做。您应该始终避免将索引(尤其是键)作为字符串。字符串比整数需要更多的比较工作,因此当它包含引用时,可能会影响查询处理。