我尝试使用网站suport编译器创建任何代码的三个表,但是帐单表存在问题。 当我运行它时,出现错误,显示它在外键附近
这些是三个表的代码
CREATE TABLE patient (
Patient Id (5) Primary key,
Name Varchar (20) Not null ,
Age Int Not null ,
Weight Int Not null ,
Gender Varchar (10) Not null,
Address Varchar (50) Not null ,
Disease Varchar (20) Not null
);
CREATE TABLE doctors (
DoctorId Varchar (5) Primary key,
Doctorname Varchar (15) Not null,
Dept Varchar (15) Not null
);
CREATE TABLE bill (
Bill_no Varchar (50) Primary key,
Patient_Id Varchar (5) Foreign key,,
doctor_charge Int Not null,
patient_type Varchar (10) null,
no_of_days Int null,
lab_charge Int null,
bill Int Not null
);
答案 0 :(得分:0)
从表创建脚本中删除“外键”。
将此添加到您的SQL脚本中:
ALTER TABLE [Bill] WITH CHECK ADD CONSTRAINT [FK_Bill_Patient] FOREIGN KEY([Patient_Id]) REFERENCES [Patient] ([Patient_Id]) GO ALTER TABLE [Bill] CHECK CONSTRAINT [FK_Bill_Patient] GO
答案 1 :(得分:0)
您必须提供要使用参考键的表的参考。 例如,您有一个表Persons,它的主键为PersonID,在这种情况下,如果要将其用作另一个表的外键,可以说Orders。 在Oracle中
CREATE TABLE Orders (
OrderID numeric(10) not null,
OrderNumber numeric(10) not null,
PersonID numeric(10) not null,
CONSTRAINT fk_person_id
FOREIGN KEY (PersonID )
REFERENCES Persons(PersonID )
Your Case :
CREATE TABLE bill
( Bill_no Varchar (50) Primary key,
Patient_Id Varchar (5),
doctor_charge Int Not null,
patient_type Varchar (10) null,
no_of_days Int null,
lab_charge Int null,
bill Int Not null,
CONSTRAINT fk_patient_id
FOREIGN KEY (Patient_Id)
REFERENCES patient(Patient_Id)
);
答案 2 :(得分:0)
患者表
CREATE TABLE patient
(
patient_id VARCHAR (5) PRIMARY KEY,
name VARCHAR (20) NOT NULL,
age INT NOT NULL,
weight INT NOT NULL,
gender VARCHAR (10) NOT NULL,
address VARCHAR (50) NOT NULL,
disease VARCHAR (20) NOT NULL
);
错误
Patient Id (5)
Primary key
)中未分配数据类型_
)。不建议使用空格。 带有空格的列名
CREATE TABLE tablename ("column name" datatype);
医生表
CREATE TABLE doctors
(
doctorid VARCHAR (5) PRIMARY KEY,
doctorname VARCHAR (15) NOT NULL,
dept VARCHAR (15) NOT NULL
);
计费表
CREATE TABLE bill
(
bill_no VARCHAR (50) PRIMARY KEY,
patient_id VARCHAR (5),
doctor_charge INT NOT NULL,
patient_type VARCHAR (10) NULL,
no_of_days INT NULL,
lab_charge INT NULL,
bill INT NOT NULL,
FOREIGN KEY (patient_id) REFERENCES patient(patient_id)
);
错误
Patient_Id Varchar (5) Foreign key,,
)Patient_Id
列(Patient_Id Varchar (5) Foreign key,,
)中有两个逗号答案 3 :(得分:0)
FOREIGN KEY
仅在引入FK约束的名称时才需要。由于未命名其他约束,因此您最好跳过该部分,直接进入REFERENCES
。
如果将外键约束指定为列定义的一部分,则可以省略数据类型以允许其在创建时从其父项继承,我认为这是一个好习惯,因为类型会自动匹配。 / p>
我们在Oracle中使用VARCHAR2
,而不是VARCHAR
。
您无需为允许为空的列指定NULL
。
我不确定5个字符的字符串是否是唯一ID的良好数据类型。您将如何生成值?通常,自动递增的序列号可以简化这一过程。
create table doctors
( doctorid varchar2(5) primary key
, doctorname varchar2(15) not null
, dept varchar2(15) not null );
create table patients
( patient_id varchar2(5) primary key
, name varchar2(20) not null
, age integer not null
, weight integer not null
, gender varchar2(10) not null
, address varchar2(50) not null
, disease varchar2(20) not null );
create table bills
( bill_no varchar2(50) primary key
, patient_id references patients -- Allow datatype to inherit from parent
, patient_type varchar2(10)
, no_of_days integer
, lab_charge integer
, bill integer not null );