我有一个创建脚本,当时我已经创建了一个表,现在我正试图向其中插入数据,但是遇到了麻烦,因为我不确定如何将数据插入到复合PK中。
我尝试过分别添加两个键,但是似乎找不到语法。
CREATE TABLE airport
( IATAAirportCodeDEP CHAR(3),
IATAAirportCodeARR CHAR(3) PRIMARY KEY(IATAAirportCodeDEP,IATAAirportCodeARR),
countryCode CHAR(4) FOREIGN KEY REFERENCES country(countryCode),
airportName VARCHAR(100) NOT NULL,
latitude DECIMAL(9,6)NOT NULL,
longitude DECIMAL(9,6)NOT NULL );
INSERT INTO airport
(IATAAirportCodeDEP,
IATAAirportCodeARR,
airportName,
latitude,
longitude,
countryCode)
VALUES ('PER','Perth International Airport',-31.9403,115.9670029,'AU'),
('SYD','Sydney Kingsford Smith International Airport', -33.9460983, 151.177002, 'AU'),
('AKL','Auckland International Airport',-37.0080986, 174.7920074,'NZ'),
('DEL','Indhira Gandhi International Airport',28.5664997,77.1031036, 'IN'),
('PEK', 'Beijing Capital International Airport',40.080101,116.5849991,'CN');
第102层15州第141行的消息 ','附近的语法不正确。
答案 0 :(得分:0)
尝试将逗号放在主键之前。一个通用的约定是将其结尾,但似乎您也可以将其放在列的中间(我不认为所有DBMS都将在列定义的中间支持完整的PRIMARY KEY定义)。
CREATE TABLE airport
( IATAAirportCodeDEP CHAR(3),
IATAAirportCodeARR CHAR(3),
countryCode CHAR(4),
airportName VARCHAR(100) NOT NULL,
latitude DECIMAL(9,6) NOT NULL,
longitude DECIMAL(9,6) NOT NULL, -- add comma here
PRIMARY KEY(IATAAirportCodeDEP,IATAAirportCodeARR)
);
此外,您在插入值中需要两个IATA代码:
INSERT INTO airport
(IATAAirportCodeDEP,
IATAAirportCodeARR,
airportName,
latitude,
longitude,
countryCode)
VALUES ('PER','TO?', 'Perth International Airport',-31.9403,115.9670029,'AU'),
('SYD','TO?', 'Sydney Kingsford Smith International Airport', -33.9460983, 151.177002, 'AU'),
('AKL','TO?', 'Auckland International Airport',-37.0080986, 174.7920074,'NZ'),
('DEL','TO?', 'Indhira Gandhi International Airport',28.5664997,77.1031036, 'IN'),
('PEK','TO?', 'Beijing Capital International Airport',40.080101,116.5849991,'CN');
我已输入“ TO”?作为价值。 我怀疑您的插入内容(值列表)实际上是正确的,并且表定义错误。您可能只希望将IATA作为机场表上的主键,而不是将IATA_DEP和IATA_ARR作为复合键。
“航班”表中可能有一个复合键...