有没有办法在 Oracle 中声明状态和级别?
Is there a way to declare Status and Level in Oracle?
我通常使用 SQL 服务器,所以在 Oracle 中声明变量似乎有点不同。
这是我正在尝试创建的 table:
CREATE TABLE EMPLOYEE(
EmpNo char(10) CONSTRAINT PK_EmpNo PRIMARY KEY,
EmpName varchar2(30),
Birthday DATE not null,
DeptNo number,
MgrNo varchar2(30) not null,
StartDate DATE not null,
Salary number(7,2) not null,
Level number CONSTRAINT Level_ck check (Level > 0 AND Level < 8) not null,
Status number CONSTRAINT Status_ck check (Status >= 0 AND Status <= 2) not null,
Note varchar2(4000));
这是错误:
我认为我声明级别和状态是错误的,因为当我将它们从 Table 中删除时,table 可以是 created.Any 建议?
LEVEL
是保留字,不能作为标识符使用。每个数据库都有它们; Oracle 保留字的完整列表在这里:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Oracle-SQL-Reserved-Words.html#GUID-55C49D1E-BE08-4C50-A9DD-8593EB925612
STATUS
不是保留字,您应该可以使用该名称创建列。
另请注意,Oracle 中的 table 和列名默认情况下不是 case-sensitive,因此使用驼峰式命名法并不合适(它只会在您的 CREATE TABLE
DDL 中可见命令)。更标准的命名约定是使用下划线分隔标签的组成部分,例如 START_DATE
或 DEPT_NR
或 TABLE_A
.
我通常使用 SQL 服务器,所以在 Oracle 中声明变量似乎有点不同。
这是我正在尝试创建的 table:
CREATE TABLE EMPLOYEE(
EmpNo char(10) CONSTRAINT PK_EmpNo PRIMARY KEY,
EmpName varchar2(30),
Birthday DATE not null,
DeptNo number,
MgrNo varchar2(30) not null,
StartDate DATE not null,
Salary number(7,2) not null,
Level number CONSTRAINT Level_ck check (Level > 0 AND Level < 8) not null,
Status number CONSTRAINT Status_ck check (Status >= 0 AND Status <= 2) not null,
Note varchar2(4000));
这是错误:
我认为我声明级别和状态是错误的,因为当我将它们从 Table 中删除时,table 可以是 created.Any 建议?
LEVEL
是保留字,不能作为标识符使用。每个数据库都有它们; Oracle 保留字的完整列表在这里:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Oracle-SQL-Reserved-Words.html#GUID-55C49D1E-BE08-4C50-A9DD-8593EB925612
STATUS
不是保留字,您应该可以使用该名称创建列。
另请注意,Oracle 中的 table 和列名默认情况下不是 case-sensitive,因此使用驼峰式命名法并不合适(它只会在您的 CREATE TABLE
DDL 中可见命令)。更标准的命名约定是使用下划线分隔标签的组成部分,例如 START_DATE
或 DEPT_NR
或 TABLE_A
.