小编Jat*_*ngh的帖子

检查出生日期的约束?

我正在Oracle中创建我的员工表,而对于emp_date我想这样做,所以出生日期不会再回到过去,也不能在将来设置?

这在CREATE TABLE语句中实现太复杂了吗?如果是这样,那么我想我必须跳过它,因为这是我必须创建约束的部分.

, emp_dob DATE NOT NULL

    CREATE TABLE employee(emp_id NUMBER(4) PRIMARY KEY
, emp_name VARCHAR2(40) NOT NULL
, emp_address VARCHAR2(60) NOT NULL
, emp_tel NUMBER(11) NOT NULL
, CONSTRAINT emp_tel_length CHECK (LENGTH(emp_tel) BETWEEN 9 and 11)
, emp_dob DATE NOT NULL
, CONSTRAINT check_date_of_birth CHECK (emp_dob BETWEEN DATE '1950-01-01' AND sysdate))
Run Code Online (Sandbox Code Playgroud)

sql database oracle oracle-sqldeveloper

4
推荐指数
1
解决办法
4万
查看次数

SQL错误:ORA-00922:缺少或无效的选项

CREATE TABLE chartered flight(flight_no NUMBER(4) PRIMARY KEY
, customer_id NUMBER(6) REFERENCES customer(customer_id)
, aircraft_no NUMBER(4) REFERENCES aircraft(aircraft_no)
, flight_type VARCHAR2 (12)
, flight_date DATE NOT NULL
, flight_time INTERVAL DAY TO SECOND NOT NULL
, takeoff_at CHAR (3) NOT NULL
, destination CHAR (3) NOT NULL)
Run Code Online (Sandbox Code Playgroud)

我不应该使用CHAR数据类型吗?

我听说使用它是一种不好的做法,但我想这样做,因此takeoff_at和destination必须至少包含3个字符,因为它们是机场代码。

这是我得到的错误:

Error at Command Line:1 Column:23
Error report:
SQL Error: ORA-00922: missing or invalid option
00922. 00000 -  "missing or invalid option"
*Cause:    
*Action:
Run Code Online (Sandbox Code Playgroud)

sql database oracle oracle-sqldeveloper

3
推荐指数
1
解决办法
9万
查看次数

复合外键 - 在 Oracle 中可行吗?

我正在尝试在 Oracle 中创建一个位于两个多对多表之间的关系/表,因此该表的主键是复合键,但两个键都是外键。

CREATE TABLE employee_licence_certificate(
    emp_id NUMBER(4) REFERENCES employee(emp_id)
    , licence_cert_code VARCHAR2(6) REFERENCES licence_certificate(licence_cert_code)
    , date_earned DATE NOT NULL
    ) 
PRIMARY KEY (emp_id, licence_cert_code))
Run Code Online (Sandbox Code Playgroud)

我尝试过使用组合键的方法,但似乎出现以下错误,这开始让我想知道这是否可能?

Error starting at line 1 in command:
CREATE TABLE employee_licence_certificate(emp_id NUMBER(4) REFERENCES employee(emp_id)
, licence_cert_code VARCHAR2(6) REFERENCES licence_certificate(licence_cert_code)
, date_earned DATE NOT NULL) PRIMARY KEY (emp_id, licence_cert_code))
Error at Command Line:3 Column:29
Error report:
SQL Error: ORA-00922: missing or invalid option
00922. 00000 -  "missing or invalid option"
*Cause:    
*Action:
Run Code Online (Sandbox Code Playgroud)

sql database oracle

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

database ×3

oracle ×3

sql ×3

oracle-sqldeveloper ×2