我正在尝试创建5个表格,但前3个下降并创建没有问题,但最后2个乐队和粉丝似乎没有太多运气。
DROP TABLE festival cascade constraints;
CREATE TABLE festival (
Festival_ID VARCHAR2(4) PRIMARY KEY,
Festival_Organizer varchar2(30),
Festival_Location varchar2(20));
DROP TABLE venue cascade constraints;
CREATE TABLE venue(
Venue_ID VARCHAR2(3) PRIMARY KEY,
Venue_Name VARCHAR2(25),
Venue_Location VARCHAR2(15),
Venue_Contact_Person VARCHAR2(30),
Venue_Contact_Number NUMERIC(9,2),
Venue_Type VARCHAR2(15),
Venue_Size VARCHAR2(6),
Venue_HirePrice FLOAT(8));
DROP TABLE staff cascade constraints;
CREATE TABLE staff(
Staff_ID VARCHAR2(3) PRIMARY KEY,
Staff_Firstname VARCHAR2(20),
Staff_Surname VARCHAR2(25),
Staff_Specialism VARCHAR2(20),
Staff_Salary NUMERIC(8,2),
Staff_Contact_Number NUMERIC(9,2),
Staff_Address VARCHAR2(50),
Venue_ID VARCHAR2(5) REFERENCES venue(Venue_ID));
DROP TABLE band cascade constraints;
CREATE TABLE band(
Band_ID VARCHAR2(3) PRIMARY KEY,
Band_Name VARCHAR2(25),
Band_ContactNo NUMERIC(8,2),
Band_PlayDate DATE NOT NULL,
Band_PlayTime TIME (8) NOT NULL,
Band_Storage_Location VARCHAR2(30),
Band_Agent VARCHAR2(25),
Band_AE VARCHAR2 (3),
Venue_ID VARCHAR2(5) REFERENCES venue(Venue_ID));
DROP TABLE fan cascade constraints;
CREATE TABLE fan(
Fan_ID VARCHAR(6) PRIMARY KEY,
Fan_Firstname VARCHAR2(15),
Fan_Surname VARCHAR2(30),
Fan_Contact_Number NUMERIC(9,2),
Fan_Address VARCHAR2(50),
Fan_DOB DATE NOT NULL,
Band_ID VARCHAR2(5) REFERENCES band(Band_ID));
当我运行代码时,我收到以下错误:
DROP TABLE带级联约束ORA-00942:表或视图不存在
CREATE TABLE band(Band_ID VARCHAR2(3)PRIMARY KEY,Band_Nam ORA-00907:缺少右括号
DROP TABLE风扇级联约束ORA-00942:表或视图不存在
CREATE TABLE粉丝(Fan_ID VARCHAR(6)PRIMARY KEY,Fan_Firstna ORA-00942:表或视图不存在
答案 0 :(得分:0)
问题是您正在尝试删除数据库中不存在的对象。错误消息似乎表明表band
和表fan
不存在。
我更熟悉MySql,您可以在IF EXISTS
语句中添加DROP TABLE
条件,但我相信Oracle不支持这种情况。
最简单的选择是在没有CREATE
语句的情况下运行两个DROP
语句,以确保创建表,之后您应该能够运行上述脚本。 / p>
更优雅的解决方案可能是使用脚本来检查表是否存在,如果存在,则删除它,否则直接创建它,如:
IF (SELECT * FROM TABLES WHERE name='band' > 0)
DROP TABLE band
CREATE TABLE band (...)
有更完整的答案
答案 1 :(得分:0)
原因是你试图删除一个不存在的表。
注释drop table语句,或者如果你想要一个自动版本 getCodecInfo().getCapabilitiesForType(…).colorFormats
,只处理特定的ORA-Error(ORA-00942)。
而不是
Enclose all the drop statements in an Anonymous block
使用:
DROP TABLE band cascade constraints;
CREATE TABLE band..
答案 2 :(得分:0)
DROP TABLE语句的ORA-00942
错误是预期的,因为您确实尝试删除不存在的表。所以你不必担心这些。
尝试创建BAND表时出现ORA-00907
错误是由于以下行:
" Venue_Contact_Number NUMERIC(9,2),"
numeric
不是a valid Oracle data type。你的意思是NUMBER。
然后,因为您没有创建BAND表,所以当您尝试创建FAN表时,会得到ORA-00942
。这是因为FAN有一个引用BAND表的外键。
作为初学者,您需要学习如何以冷静的眼光阅读自己的代码,以便发现错误。当您在一个脚本中运行一大堆相关语句时,存在单个错误会级联成一系列错误的风险。发生这种情况时,请提取第一个失败的语句并单独处理它。经常删除该bug将清除所有其他失败,这应该是这里的情况。