在SQL中创建数据库表,奇怪的错误 [英] Making a Database table in SQL, weird error

查看:128
本文介绍了在SQL中创建数据库表,奇怪的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是数据库的代码。它给我一个错误,每个TABLE创建的东西已经取得了这个名字,其中一个错误消息是在帖子结尾。

This is the code for the Database.Its giving me an error that for every TABLE created something has already taken that name, one of the error messages is at the end of the post.

COMMIT;

CREATE TABLE Team (
  Team_ID INTEGER GENERATED ALWAYS AS IDENTITY,
  Team_Name NVARCHAR2(40) NOT NULL,
  Team_Manager VARCHAR(20),
  CONSTRAINT kkeyconst PRIMARY KEY(Team_ID)
 );

 COMMIT;

 insert into Team(TEAM_NAME, TEAM_MANAGER) VALUES ('Red Sox', 'Jon');
 insert into Team(TEAM_NAME, TEAM_MANAGER) VALUES('White Sox', 'Tony');

CREATE TABLE Driver (
  Driver_id INTEGER NOT NULL,
  Teams_ID INTEGER,
  Driver_age INTEGER,
  Driver_Name NVARCHAR2(20) NOT NULL,
  CONSTRAINT DriverAge CHECK (Driver_age BETWEEN '19' AND '65'),
  CONSTRAINT driverpk PRIMARY KEY(Driver_ID),
  CONSTRAINT Teams_PK FOREIGN KEY (Teams_ID) REFERENCES Team(Team_ID)
  );

 COMMIT;

  insert into Driver(DRIVER_AGE,DRIVER_NAME) VALUES ('21', 'Jon');
  insert into Driver(DRIVER_AGE, DRIVER_NAME) VALUES ('20', 'Tony');

  CREATE TABLE Participation (
    TeamName_ID INTEGER,
    Driver_ID INTEGER,
    PointsEarned INTEGER,
    CONSTRAINT TeamName_FK FOREIGN KEY (TeamName_ID) REFERENCES     Team(Team_ID),
    CONSTRAINT Driver_FK FOREIGN KEY(Driver_ID) REFERENCES Driver(Driver_ID)
   );

  COMMIT;
  insert into Participation(PARTICIPATION_POINTS_EARNED) VALUES (150);


CREATE TABLE Finish (
  Racer_ID INTEGER,
  Finish_Position INTEGER NOT NULL,
  Fishish_Result VARCHAR(50)  NOT NULL,
  CONSTRAINT Racer_FK FOREIGN KEY (Racer_ID) REFERENCES Driver(Driver_id)
);

COMMIT;
  insert into Finish(Finish_POSITION, Finish_RESULT) VALUES ('1', 'Winner');
 insert into Finish(Finish_POSITION, Finish_RESULT) VALUES ('3', 'Third   Place');

CREATE TABLE RaceComponent (
  RC_ID INTEGER NOT NULL,
  Driver1_ID INTEGER,
  RC_Type VARCHAR(25),
  CONSTRAINT Rcpk  PRIMARY KEY(RC_ID),
  CONSTRAINT Driver1_FK FOREIGN KEY (Driver1_ID) REFERENCES Driver(Driver_ID)
  );

 COMMIT;
  insert into RaceComponent(RC_TYPE) VALUES ('Hot Wheels');
  insert into RaceComponent(RC_TYPE) VALUES ('Tonka');



CREATE TABLE Race (
  Race_Id INTEGER,
  RC_ID INTEGER,
  Race_Title VARCHAR(30) NOT NULL,
  Race_Location VARCHAR(50) NOT NULL,
  Race_Date DATE,
  CONSTRAINT RACPEK PRIMARY KEY(RACE_ID),
  CONSTRAINT RC_FK FOREIGN KEY (RC_ID) REFERENCES RaceComponent(RC_ID)
  );

  COMMIT;
  insert into Race(RACE_TITLE, RACE_LOCATION, RACE_DATE) VALUES ('Tonys    race',   'Moncton', DATE '2016-04-25');
  insert into Race(RACE_TITLE, RACE_LOCATION, RACE_DATE) VALUES ('Mikes Racing',     'San-Francisco', DATE '2015-04-25');

错误:

Commit complete.


Error starting at line : 3 in command -
CREATE TABLE Team (
  Team_ID INTEGER GENERATED ALWAYS AS IDENTITY,
  Team_Name NVARCHAR2(40) NOT NULL,
  Team_Manager VARCHAR(20),
  CONSTRAINT kkeyconst PRIMARY KEY(Team_ID)
)
Error report -
SQL Error: ORA-00955: name is already used by an existing object
00955. 00000 -  "name is already used by an existing object"
*Cause:    
*Action:

Commit complete.

我以为可能是因为我正在调用外键与其主键值相同的名称,但是不能100%确定是什么导致的。

I thought it might be because I am calling the Foreign keys the same name as their primary key value, but im not 100% sure what is causing it.

推荐答案

如果表是在您的脚本的早期运行过程中创建的,会得到这个错误。在尝试创建表之前,请先检查表是否存在。这是StackOverflow的一个很好的代码片段,用于检查表格是否已经存在。

If the table was created during an earlier run of your script, you will get that error. It is always good to check to see if your table already exists before trying to create it. Here is a good snippet of code from StackOverflow for checking to see if the table already exists or not.

IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_SCHEMA = 'TheSchema' 
                 AND  TABLE_NAME = 'TheTable'))
BEGIN
    --Do Stuff
END

这篇关于在SQL中创建数据库表,奇怪的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆