我已经阅读了许多关于我的问题的帖子,但我仍然无法找到我的请求的问题。
我的剧本:
-- 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)
答案 0 :(得分:3)
错误在以下几行:
BOOL_COMPTEUR_AFF char(1) not null default 0,
BOOL_LOGO_AFF char(1) not null default 0,
0
是一个数字,而不是字符文字。字符文字需要用单引号'0'
括起来。 More details in the manual
The default clause also needs to go before the not null
条款:
BOOL_COMPTEUR_AFF CHAR(1) DEFAULT '0' NOT NULL,
BOOL_LOGO_AFF CHAR(1) DEFAULT '0' NOT NULL,
同样的问题在表STATUT_MISE_USAGER
我更喜欢使用number(1)
列而不是char(1)
列来伪造Oracle中的布尔数据类型 - 但这是个人偏好。您可能还需要对这些列进行检查约束,以确保只能存储'0'
和'1'
。