创建表上的Sql架构错误

时间:2014-03-17 22:39:46

标签: sql oracle

它会产生错误,我无法理解脚本的错误。每个建议都会有所帮助thnx

CREATE TABLE ar_abonent
(
    ar_nr_klienti_primary_key int,
    emri varchar(25),
    mbiemri varchar(25)
);

create table ar_celular
(
    NR_CEL INT (12),
    ar_nr_klienti FOREIGN Key REFERENCES ar_abonent (ar_nr_klienti),int,
    identifikues boolean,
    data_aktivizimit date,
    marka varchar(25)
    constraint chk_celular check (NR_CEL IN ('35566%','35567%','35568%','35569%' AND IDENTIFIKUES='TRUE')
);

2 个答案:

答案 0 :(得分:0)

CREATE TABLE ar_abonent
(
    ar_nr_klienti int NOT NULL primary key ,  --<-- This column needs to be a primary key
    emri varchar(25),
    mbiemri varchar(25)
);

create table ar_celular
(
    NR_CEL INT ,
    ar_nr_klienti int FOREIGN Key REFERENCES ar_abonent (ar_nr_klienti) ,
    identifikues bit,
    data_aktivizimit date,
    marka varchar(25),
    constraint chk_celular check (NR_CEL IN ('35566%','35567%','35568%','35569%') AND IDENTIFIKUES= 1)
);

答案 1 :(得分:0)

我尝试使用SQL Fiddle(设置为Oracle 11G R2)进行纠正,因为我没有任何Oracle服务器。这就是它应该如何运行而没有问题:

CREATE TABLE ar_abonent
(
    ar_nr_klienti int NOT NULL PRIMARY KEY ,
    emri VARCHAR2(25),
    mbiemri VARCHAR2(25)
);

CREATE TABLE ar_celular
(
  NR_CEL int,
  ar_nr_klienti int,
  identifikues number(1),
  data_aktivizimit date,
  marka VARCHAR2(25),
  CONSTRAINT fk_column FOREIGN KEY (ar_nr_klienti) REFERENCES ar_abonent  (ar_nr_klienti),
  CONSTRAINT chk_celular CHECK (NR_CEL IN ('35566%','35567%','35568%','35569%') AND IDENTIFIKUES= 1)
);

Sample SQL Fiddle

结果证明Oracle没有BOOLEAN类型(在表级别,虽然它确实存在于PL / SQL中),并且VARCHAR2可能比VARCHAR更受欢迎(除非空值是一个问题)。