当 运行 此脚本时获取 'missing or invalid option'
Getting 'missing or invalid option' when running this script
当 运行 这个脚本时,我得到一个 'missing or invalid option'(完整的错误是:ORA-00922:缺少或无效的选项 ORA-06512:在“SYS. WWV_DBMS_SQL_APEX_200100”,第 581 行 ORA-06512:在“SYS.DBMS_SYS_SQL”,第 1658 行 ORA-06512:在“SYS.WWV_DBMS_SQL_APEX_200100”,第 567 行 ORA-06512:在“APEX_200100.WWV_FLOW_DYNAMIC_EXEC”,第 2127 行 )。有问题的语句是“CREATE TABLE manufacturer (m_name VARCHAR2(50), m_id。”我应该怎么做才能修复它?
DROP TABLE vehicles CASCADE constraints;
DROP TABLE suppliers CASCADE constraints;
DROP TABLE manufacturer CASCADE constraints;
CREATE TABLE vehicles
(VIN VARCHAR2(17),
brand VARCHAR2(20),
model VARCHAR2(20),
color VARCHAR2(10),
PRIMARY KEY (VIN, brand, model, color)
);
CREATE TABLE suppliers
(s_name VARCHAR2(20),
s_id VARCHAR2(15),
part_id VARCHAR2(20),
supply_date VARCHAR2(15),
PRIMARY KEY (s_name, s_id, part_id, supply_date)
);
CREATE TABLE manufacturer
(m_name VARCHAR2(50),
m_id VARCHAR2(15),
s_name VARCHAR2(20),
VIN VARCHAR2(17)),
PRIMARY KEY (m_name, m_id)),
FOREIGN KEY (s_name) REFERENCES suppliers
ON DELETE SET NULL
FOREIGN KEY (VIN) REFERENCES vehicles
ON DELETE SET NULL
);
--LOAD DATABASE
INSERT INTO vehicles VALUES ('JM1CW2BL4D0154490', 'Mazda', 'Mazda5', 'Brown');
INSERT INTO suppliers VALUES ('MNAO Supplier', 'MNAO', '308', '01/28/2013');
INSERT INTO manufacturer VALUES ('Mazda Motor Corp', 'MZDAY', 'MNAO Supplier', 'JM1CW2BL4D0154490');
车辆识别码 (VIN) 是唯一的;您不需要任何其他列来创建主键,因此您的 vehicles
table 可以是:
CREATE TABLE vehicles(
VIN VARCHAR2(17)
CONSTRAINT vehicles__vin__pk PRIMARY KEY,
brand VARCHAR2(20)
CONSTRAINT vehicles__brand__nn NOT NULL,
model VARCHAR2(20)
CONSTRAINT vehicles__model__nn NOT NULL,
color VARCHAR2(10)
CONSTRAINT vehicles__color__nn NOT NULL
);
同样,您可能只想将一列作为 suppliers
中的主键(并且应将日期值存储为 DATE
数据类型):
CREATE TABLE suppliers (
s_name VARCHAR2(20)
CONSTRAINT suppliers__s_name__pk PRIMARY KEY,
s_id VARCHAR2(15)
CONSTRAINT suppliers__s_id__nn NOT NULL,
part_id VARCHAR2(20)
CONSTRAINT suppliers__part_id__nn NOT NULL,
supply_date DATE
CONSTRAINT suppliers__supply_date__nn NOT NULL
);
那么你的manufacturer
table可以是:
CREATE TABLE manufacturer(
m_name VARCHAR2(50),
m_id VARCHAR2(15),
s_name VARCHAR2(20)
CONSTRAINT manufacturer__s_name__fk
REFERENCES suppliers (s_name) ON DELETE SET NULL,
VIN VARCHAR2(17)
CONSTRAINT manufacturer__vin__fk
REFERENCES vehicles (vin) ON DELETE SET NULL,
CONSTRAINT manufacturer__m_name__m_id__pk PRIMARY KEY (m_name, m_id)
);
(同样,您可能想要更改它,因此只有一个列是主键。)
然后你可以插入你的数据:
INSERT INTO vehicles VALUES ('JM1CW2BL4D0154490', 'Mazda', 'Mazda5', 'Brown');
INSERT INTO suppliers VALUES ('MNAO Supplier', 'MNAO', '308', DATE '2013-01-28');
INSERT INTO manufacturer VALUES ('Mazda Motor Corp', 'MZDAY', 'MNAO Supplier', 'JM1CW2BL4D0154490');
(并且不要将日期作为字符串传递,使用 TO_DATE
或日期文字。)
db<>fiddle here
当 运行 这个脚本时,我得到一个 'missing or invalid option'(完整的错误是:ORA-00922:缺少或无效的选项 ORA-06512:在“SYS. WWV_DBMS_SQL_APEX_200100”,第 581 行 ORA-06512:在“SYS.DBMS_SYS_SQL”,第 1658 行 ORA-06512:在“SYS.WWV_DBMS_SQL_APEX_200100”,第 567 行 ORA-06512:在“APEX_200100.WWV_FLOW_DYNAMIC_EXEC”,第 2127 行 )。有问题的语句是“CREATE TABLE manufacturer (m_name VARCHAR2(50), m_id。”我应该怎么做才能修复它?
DROP TABLE vehicles CASCADE constraints;
DROP TABLE suppliers CASCADE constraints;
DROP TABLE manufacturer CASCADE constraints;
CREATE TABLE vehicles
(VIN VARCHAR2(17),
brand VARCHAR2(20),
model VARCHAR2(20),
color VARCHAR2(10),
PRIMARY KEY (VIN, brand, model, color)
);
CREATE TABLE suppliers
(s_name VARCHAR2(20),
s_id VARCHAR2(15),
part_id VARCHAR2(20),
supply_date VARCHAR2(15),
PRIMARY KEY (s_name, s_id, part_id, supply_date)
);
CREATE TABLE manufacturer
(m_name VARCHAR2(50),
m_id VARCHAR2(15),
s_name VARCHAR2(20),
VIN VARCHAR2(17)),
PRIMARY KEY (m_name, m_id)),
FOREIGN KEY (s_name) REFERENCES suppliers
ON DELETE SET NULL
FOREIGN KEY (VIN) REFERENCES vehicles
ON DELETE SET NULL
);
--LOAD DATABASE
INSERT INTO vehicles VALUES ('JM1CW2BL4D0154490', 'Mazda', 'Mazda5', 'Brown');
INSERT INTO suppliers VALUES ('MNAO Supplier', 'MNAO', '308', '01/28/2013');
INSERT INTO manufacturer VALUES ('Mazda Motor Corp', 'MZDAY', 'MNAO Supplier', 'JM1CW2BL4D0154490');
车辆识别码 (VIN) 是唯一的;您不需要任何其他列来创建主键,因此您的 vehicles
table 可以是:
CREATE TABLE vehicles(
VIN VARCHAR2(17)
CONSTRAINT vehicles__vin__pk PRIMARY KEY,
brand VARCHAR2(20)
CONSTRAINT vehicles__brand__nn NOT NULL,
model VARCHAR2(20)
CONSTRAINT vehicles__model__nn NOT NULL,
color VARCHAR2(10)
CONSTRAINT vehicles__color__nn NOT NULL
);
同样,您可能只想将一列作为 suppliers
中的主键(并且应将日期值存储为 DATE
数据类型):
CREATE TABLE suppliers (
s_name VARCHAR2(20)
CONSTRAINT suppliers__s_name__pk PRIMARY KEY,
s_id VARCHAR2(15)
CONSTRAINT suppliers__s_id__nn NOT NULL,
part_id VARCHAR2(20)
CONSTRAINT suppliers__part_id__nn NOT NULL,
supply_date DATE
CONSTRAINT suppliers__supply_date__nn NOT NULL
);
那么你的manufacturer
table可以是:
CREATE TABLE manufacturer(
m_name VARCHAR2(50),
m_id VARCHAR2(15),
s_name VARCHAR2(20)
CONSTRAINT manufacturer__s_name__fk
REFERENCES suppliers (s_name) ON DELETE SET NULL,
VIN VARCHAR2(17)
CONSTRAINT manufacturer__vin__fk
REFERENCES vehicles (vin) ON DELETE SET NULL,
CONSTRAINT manufacturer__m_name__m_id__pk PRIMARY KEY (m_name, m_id)
);
(同样,您可能想要更改它,因此只有一个列是主键。)
然后你可以插入你的数据:
INSERT INTO vehicles VALUES ('JM1CW2BL4D0154490', 'Mazda', 'Mazda5', 'Brown');
INSERT INTO suppliers VALUES ('MNAO Supplier', 'MNAO', '308', DATE '2013-01-28');
INSERT INTO manufacturer VALUES ('Mazda Motor Corp', 'MZDAY', 'MNAO Supplier', 'JM1CW2BL4D0154490');
(并且不要将日期作为字符串传递,使用 TO_DATE
或日期文字。)
db<>fiddle here