簡體   English   中英

Oracle11g SQL-創建表時缺少右括號錯誤

[英]Oracle11g SQL - Error missing right parenthesis while creating table

我已經閱讀了許多有關我的問題的主題,但是我仍然找不到我的請求有什么問題。

這是我的腳本:

-- drop table MISES cascade constraints;
-- drop table STATUT_MISE_USAGER  cascade constraints;
-- drop table ITEMS cascade constraints;
drop table USAGERS cascade constraints;
-- drop table INFO_ENCAN_OBNL cascade constraints;

create table USAGERS (
        NOM_USAGER_CLI varchar2(40) not null,
        NOM_CLI varchar2(40) not null,
        PRENOM_CLI varchar2(40) not null,
        NO_TELEPHONE_CLI varchar2(13) not null,
        ADRESSE_COURRIEL_CLI varchar2(50) not null,
        MOT_DE_PASSE_CLI varchar2(40) not null,
        constraint PK_USAGERS 
      primary key (NOM_USAGER_CLI),
        constraint AK_USAGERS_1 
      unique (NO_TELEPHONE_CLI),
        constraint AK_USAGERS_2 
      unique (ADRESSE_COURRIEL_CLI),
    constraint CT_NO_TELEPHONE_CLI 
      check (regexp_like(NO_TELEPHONE_CLI, '^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$')),
    constraint CT_MOT_DE_PASSE_CLI 
      check (length(MOT_DE_PASSE_CLI) >= 8)); -- À corriger

create table INFO_ENCAN_OBNL (
        NOM_ECN varchar2(40) not null,
        TYPE_ECN varchar2(40) not null,
        DATE_DEBUT_ECN date not null,
        HEURE_DEBUT_ECN varchar2(5) not null,
        DATE_FIN_ECN date,
        HEURE_FIN_ECN varchar2(5),
        TYPE_AFF varchar2(40),
        RESOLUTION_AFF varchar2(20),
        NB_ITEMS_L_AFF number(2),
        NB_ITEMS_C_AFF number(2),
        BOOL_COMPTEUR_AFF char(1) not null default 0,
        BOOL_LOGO_AFF char(1) not null default 0,
        NOM_OBN varchar2(40) not null,
        -- LOGO_OBN image not null,
        COULEUR_1_OBN varchar2(20),
        COULEUR_2_OBN varchar2(20),
        COULEUR_3_OBN varchar2(20),
        constraint PK_INFO_ENCAN_OBNL 
      primary key (NOM_ECN),
    constraint CT_TYPE_AFF 
      check (TYPE_AFF in ('Écrans géants','Moniteurs sur tables','IPads'))); -- À corriger

create table ITEMS (
    NOM_ECN varchar2(40) not null,
        NO_ITEM number(4) not null,
        TITRE_ITM varchar2(40) not null,
        -- PHOTO_ITM image not null,
        DESCRIPTION_ITM varchar2(50) not null,
        DONATEUR_ITM varchar2(40) not null,
        MNT_VALEUR_REELLE_ITM number(10,2) not null,
        MNT_DEPART_ITM number(10,2) not null,
        MNT_INCREMENT_MIN_ITM number(10,2) not null,
        MNT_ACHAT_IMMEDIAT_ITM number(10,2) not null,
        NOM_USAGER_MENEUR_ITM varchar2(40),
        MNT_ACTUEL_MISE_ITM number(10,2) not null default 0,
        BOOL_MISE_ACTIVEE_ITM char(1) not null default 1,
        BOOL_PAYE_ITM char(1) not null default 0,
        constraint PK_ITEMS 
      primary key (NOM_ECN, NO_ITEM),
        constraint FK_INFO_ENCAN_OBNL 
      foreign key (NOM_ECN)
            references INFO_ENCAN_OBNL (NOM_ECN)
            on delete cascade,
        constraint CT_BOOL_MISE_ACTIVEE_ITM 
      check (case when MNT_ACTUEL_MISE_ITM = MNT_ACHAT_IMMEDIAT 
            then BOOL_MISE_ACTIVEE_ITM = 0)); -- À corriger

create table STATUT_MISE_USAGER (
        NOM_ECN varchar2(40) not null,
        NO_ITEM number(4) not null,
        NOM_USAGER_CLI varchar2(20) not null,
        BOOL_MENEUR_ITM char(1) not null default 0,
        BOOL_DEJA_MISE_ITM char(1) not null default 0, -- 0 = true, 1 = false
        BOOL_FAVORI_ITM char(1) not null default 0,
        constraint PK_STATUT_MISE_USAGER
      primary key (NOM_ECN, NO_ITEM, NOM_USAGER_CLI),
        constraint FK_ITEMS 
      foreign key (NOM_ECN, NO_ITEM)
            references ITEMS (NOM_ECN, NO_ITEM)
            on delete cascade,
        constraint FK_USAGERS 
      foreign key (NOM_USAGER_CLI)
            references USAGERS (NOM_USAGER_CLI)
            on delete cascade,
        constraint FK_INFO_ENCAN_OBNL 
      foreign key (NOM_ECN)
            references INFO_ENCAN_OBNL (NOM_ECN)
            on delete cascade,
        constraint CT_BOOL_MENEUR_ITM 
      check (case when BOOL_DEJA_MISE_ITM = 0 
            then BOOL_MENEUR_ITM = 0)); -- À corriger

create table MISES (
        NOM_ECN varchar2(40) not null,
        NO_ITEM number(4) not null,
        NOM_USAGER_CLI varchar2(20) not null,
        MNT_MIS number(10,2) not null,
        DATE_MIS date not null,
        HEURE_MIS varchar2(5) not null,
        constraint PK_MISES 
      primary key (NOM_ECN, NO_ITEM, NOM_USAGER_CLI, MNT_MIS),
        constraint AK_MISES 
      unique (NOM_ECN, NO_ITEM, NOM_USAGER_CLI, DATE_MIS, HEURE_MIS),
        constraint FK_STATUT_MISE_USAGER 
      foreign key (NOM_ECN, NO_ITEM, NOM_USAGER_CLI)
            references STATUT_MISE_USAGER (NOM_ECN, NO_ITEM, NOM_USAGER_CLI)
            on delete cascade,
        constraint FK_ITEMS 
      foreign key (NOM_ECN, NO_ITEM)
            references ITEMS (NOM_ECN, NO_ITEM)
            on delete cascade,
        constraint FK_USAGERS 
      foreign key (NOM_USAGER_CLI)
            references USAGERS (NOM_USAGER_CLI)
            on delete cascade,
        constraint FK_INFO_ENCAN_OBNL 
      foreign key (NOM_ECN)
            references INFO_ENCAN_OBNL (NOM_ECN)
            on delete cascade); -- À corriger

alter table USAGERS
    add constraint CT_NOM_CLI 
    check (regexp_like(NOM_CLI,'^[[:alpha:]''-]+$'));

alter table USAGERS
    add constraint CT_PRENOM_CLI 
    check (regexp_like(PRENOM_CLI,'^[[:alpha:]''-]+$'));

這些是我獲得的錯誤:

table USAGERS supprimé(e).
table USAGERS créé(e).
Erreur commençant à la ligne 30 de la commande :
create table INFO_ENCAN_OBNL (
        NOM_ECN varchar2(40) not null,
        TYPE_ECN varchar2(40) not null,
        DATE_DEBUT_ECN date not null,
        HEURE_DEBUT_ECN varchar2(5) not null,
        DATE_FIN_ECN date,
        HEURE_FIN_ECN varchar2(5),
        TYPE_AFF varchar2(40),
        RESOLUTION_AFF varchar2(20),
        NB_ITEMS_L_AFF number(2),
        NB_ITEMS_C_AFF number(2),
        BOOL_COMPTEUR_AFF char(1) not null default 0,
        BOOL_LOGO_AFF char(1) not null default 0,
        NOM_OBN varchar2(40) not null,
        -- LOGO_OBN image not null,
        COULEUR_1_OBN varchar2(20),
        COULEUR_2_OBN varchar2(20),
        COULEUR_3_OBN varchar2(20),
        constraint PK_INFO_ENCAN_OBNL 
      primary key (NOM_ECN),
    constraint CT_TYPE_AFF 
      check (TYPE_AFF in ('Écrans géants','Moniteurs sur tables','IPads')))
Erreur à la ligne de commande : 41, colonne : 38
Rapport d'erreur :
Erreur SQL : ORA-00907: parenthèse de droite absente
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:
Erreur commençant à la ligne 53 de la commande :
create table ITEMS (
    NOM_ECN varchar2(40) not null,
        NO_ITEM number(4) not null,
        TITRE_ITM varchar2(40) not null,
        -- PHOTO_ITM image not null,
        DESCRIPTION_ITM varchar2(50) not null,
        DONATEUR_ITM varchar2(40) not null,
        MNT_VALEUR_REELLE_ITM number(10,2) not null,
        MNT_DEPART_ITM number(10,2) not null,
        MNT_INCREMENT_MIN_ITM number(10,2) not null,
        MNT_ACHAT_IMMEDIAT_ITM number(10,2) not null,
        NOM_USAGER_MENEUR_ITM varchar2(40),
        MNT_ACTUEL_MISE_ITM number(10,2) not null default 0,
        BOOL_MISE_ACTIVEE_ITM char(1) not null default 1,
        BOOL_PAYE_ITM char(1) not null default 0,
        constraint PK_ITEMS 
      primary key (NOM_ECN, NO_ITEM),
        constraint FK_INFO_ENCAN_OBNL 
      foreign key (NOM_ECN)
            references INFO_ENCAN_OBNL (NOM_ECN)
            on delete cascade,
        constraint CT_BOOL_MISE_ACTIVEE_ITM 
      check (case when MNT_ACTUEL_MISE_ITM = MNT_ACHAT_IMMEDIAT 
            then BOOL_MISE_ACTIVEE_ITM = 0))
Erreur à la ligne de commande : 65, colonne : 45
Rapport d'erreur :
Erreur SQL : ORA-00907: parenthèse de droite absente
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:
Erreur commençant à la ligne 78 de la commande :
create table STATUT_MISE_USAGER (
        NOM_ECN varchar2(40) not null,
        NO_ITEM number(4) not null,
        NOM_USAGER_CLI varchar2(20) not null,
        BOOL_MENEUR_ITM char(1) not null default 0,
        BOOL_DEJA_MISE_ITM char(1) not null default 0, -- 0 = true, 1 = false
        BOOL_FAVORI_ITM char(1) not null default 0,
        constraint PK_STATUT_MISE_USAGER
      primary key (NOM_ECN, NO_ITEM, NOM_USAGER_CLI),
        constraint FK_ITEMS 
      foreign key (NOM_ECN, NO_ITEM)
            references ITEMS (NOM_ECN, NO_ITEM)
            on delete cascade,
        constraint FK_USAGERS 
      foreign key (NOM_USAGER_CLI)
            references USAGERS (NOM_USAGER_CLI)
            on delete cascade,
        constraint FK_INFO_ENCAN_OBNL 
      foreign key (NOM_ECN)
            references INFO_ENCAN_OBNL (NOM_ECN)
            on delete cascade,
        constraint CT_BOOL_MENEUR_ITM 
      check (case when BOOL_DEJA_MISE_ITM = 0 
            then BOOL_MENEUR_ITM = 0))
Erreur à la ligne de commande : 82, colonne : 36
Rapport d'erreur :
Erreur SQL : ORA-00907: parenthèse de droite absente
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:
Erreur commençant à la ligne 103 de la commande :
create table MISES (
        NOM_ECN varchar2(40) not null,
        NO_ITEM number(4) not null,
        NOM_USAGER_CLI varchar2(20) not null,
        MNT_MIS number(10,2) not null,
        DATE_MIS date not null,
        HEURE_MIS varchar2(5) not null,
        constraint PK_MISES 
      primary key (NOM_ECN, NO_ITEM, NOM_USAGER_CLI, MNT_MIS),
        constraint AK_MISES 
      unique (NOM_ECN, NO_ITEM, NOM_USAGER_CLI, DATE_MIS, HEURE_MIS),
        constraint FK_STATUT_MISE_USAGER 
      foreign key (NOM_ECN, NO_ITEM, NOM_USAGER_CLI)
            references STATUT_MISE_USAGER (NOM_ECN, NO_ITEM, NOM_USAGER_CLI)
            on delete cascade,
        constraint FK_ITEMS 
      foreign key (NOM_ECN, NO_ITEM)
            references ITEMS (NOM_ECN, NO_ITEM)
            on delete cascade,
        constraint FK_USAGERS 
      foreign key (NOM_USAGER_CLI)
            references USAGERS (NOM_USAGER_CLI)
            on delete cascade,
        constraint FK_INFO_ENCAN_OBNL 
      foreign key (NOM_ECN)
            references INFO_ENCAN_OBNL (NOM_ECN)
            on delete cascade)
Erreur à la ligne de commande : 116, colonne : 15
Rapport d'erreur :
Erreur SQL : ORA-00942: Table ou vue inexistante
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:
table USAGERS modifié(e).
table USAGERS modifié(e).

自許多小時以來,我一直堅持使用這種運動進行上學,所以我要感謝大家花一點時間解決我的問題。 (我真的需要您的幫助!:0)

錯誤在以下幾行中:

BOOL_COMPTEUR_AFF char(1) not null default 0,
BOOL_LOGO_AFF char(1) not null default 0,

0是數字,而不是字符文字。 字符文字需要用單引號'0'括起來。 手冊中的更多詳細信息

default子句也需要放在not null子句之前

BOOL_COMPTEUR_AFF CHAR(1) DEFAULT '0' NOT NULL,
BOOL_LOGO_AFF     CHAR(1) DEFAULT '0' NOT NULL,

STATUT_MISE_USAGER表中STATUT_MISE_USAGER相同的問題

我更喜歡使用number(1)列而不是char(1)列來偽造Oracle中的布爾數據類型-但這是個人喜好。 您可能還希望對這些列進行檢查約束,以確保只能存儲'0''1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM