Sql server 外键约束不存在错误
我一直在我的psql数据库中得到这个错误Sql server 外键约束不存在错误,sql-server,database,postgresql,foreign-keys,constraints,Sql Server,Database,Postgresql,Foreign Keys,Constraints,我一直在我的psql数据库中得到这个错误 bikefacility=# ERROR: syntax error at or near "c" bikefacility-# LINE 1: c bikefacility-# ^ bikefacility-# bikefacility=# ALTER TABLE bicycle ADD CONSTRAINT fk_maintenance_contact_person FOREIGN KEY (maintenance_contact_
bikefacility=# ERROR: syntax error at or near "c"
bikefacility-# LINE 1: c
bikefacility-# ^
bikefacility-# bikefacility=# ALTER TABLE bicycle ADD CONSTRAINT fk_maintenance_contact_person FOREIGN KEY (maintenance_contact_person) REFERENCES maintenance(maintenance_contact_person);
ERROR: syntax error at or near "ERROR"
LINE 1: ERROR: syntax error at or near "c"
^
bikefacility=# ERROR: column "maintenance_contact_person" referenced in foreign key constraint does not exist
bikefacility-# bikefacility=# ALTER TABLE bicycle ADD CONSTRAINT fk_rental_period FOREIGN KEY (rental_period) REFERENCES rental(rental_period);
ERROR: syntax error at or near "ERROR"
LINE 1: ERROR: column "maintenance_contact_person" referenced in fo...
^
bikefacility=# ERROR: column "rental_period" referenced in foreign key constraint does not exist
bikefacility-# bikefacility=# ALTER TABLE bicycle ADD CONSTRAINT fk_terminal_id FOREIGN KEY (terminal_id) REFERENCES terminal(terminal_id);
ERROR: syntax error at or near "ERROR"
LINE 1: ERROR: column "rental_period" referenced in foreign key con...
^
bikefacility=# ERROR: column "terminal_id" referenced in foreign key constraint does not exist
这是我的密码。我在代码中创建了与您在这里看到的相同样式的外键
CREATE TABLE member (
member_id INTEGER PRIMARY KEY,
member_fname VARCHAR(15) NOT NULL,
member_lname VARCHAR(15) NOT NULL,
member_status VARCHAR(15) NOT NULL,
member_address VARCHAR(10) NOT NULL,
member_email VARCHAR(30) NOT NULL
);
CREATE TABLE bicycle (
bicycle_id INTEGER PRIMARY KEY,
bicycle_brand VARCHAR(25) NOT NULL,
bicycle_model VARCHAR(25) NOT NULL,
bicycle_colour VARCHAR(15) NOT NULL,
bicycle_type VARCHAR(20) NOT NULL,
bicycle_size VARCHAR(10) NOT NULL,
bicycle_availability VARCHAR(20) NOT NULL
);
ALTER TABLE bicycle ADD CONSTRAINT fk_bicycle_pickup_date FOREIGN KEY (bicycle_pickup_date) REFERENCES rental(bicycle_pickup_date) >MATCH FULL;
ALTER TABLE bicycle ADD CONSTRAINT fk_maintenance_contact_person FOREIGN KEY (maintenance_contact_person) REFERENCES maintenance(maintenance_contact_person);
ALTER TABLE bicycle ADD CONSTRAINT fk_terminal_id FOREIGN KEY (terminal_id) REFERENCES terminal(terminal_id);
ALTER TABLE bicycle ADD CONSTRAINT fk_rental_period FOREIGN KEY (rental_period) REFERENCES rental(rental_period);
CREATE TABLE sponsor (
sponsor_id INTEGER PRIMARY KEY,
sponsor_name VARCHAR(15) NOT NULL,
sponsor_contact VARCHAR(30) NOT NULL,
sponsor_period DATE NOT NULL,
sponsor_address VARCHAR(50) NOT NULL,
sponsor_fee DECIMAL (6, 2) NOT NULL
);
CREATE TABLE terminal (
terminal_id INTEGER PRIMARY KEY,
terminal_address VARCHAR(50) NOT NULL,
terminal_minstorage VARCHAR(50) NOT NULL,
terminal_maxstorage VARCHAR(50) NOT NULL
);
CREATE TABLE rental (
rental_no INTEGER PRIMARY KEY,
rental_period DATE NOT NULL,
bicycle_pickup_date DATE NOT NULL
);
上面说这些列不存在,但我知道它们存在,因为它们就在那里!有人能帮我吗?提前谢谢 外键的语法对于postgresql是不正确的。例如,ALTER TABLE BICKLE ADD CONSTRAINT fk_terminal_id外键terminal_id引用terminal_id;要求自行车中有一个名为terminal_id的字段,因为查询中的前terminal_id引用自行车表,它应该引用terminal表中的terminal_id 下面是外键的简短教程 致以最良好的祝愿,
比亚尼你的模式很混乱 没有表维护,但您尝试引用它。 必须先创建外部表(如rental),然后才能对其进行fk引用。 在进行引用的表中必须有命名字段。桌上自行车中没有自行车取车日期、维护联系人、终端id或租赁期字段。 你的fk参考通常听起来很奇怪。你真的希望每辆自行车只能租一次吗?也许你的意思是租赁指一辆自行车?
此外,您的命名约定是相当多余的。没有必要在每个字段名中重复表名,这只会在代码中增加不必要的混乱。SQL server或PostgreSQL?