sql - 有什么方法可以设置一个变量以在 oracle SQL 中只接受两个值?
问题描述
这是我的代码,我想将我的变量设置Account_Type
为只接受两个值。
CREATE TABLE AccountRrequest(
RequestId NUMBER PRIMARY KEY,
Branch VARCHAR2(15),
Account_Type VARCHAR2(15), --> Account_Type
Title VARCHAR2(4),
FirstName VARCHAR2(15),
LastName VARCHAR2(15),
Birthday DATE DEFAULT (MM-DD-YYYY),
WorkPhone NUMBER(10),
HomePhone NUMBER(10),
Address VARCHAR2(30),
State VARCHAR2(15),
Zip NUMBER(10),
Email VARCHAR2(30),
Status VARCHAR2(10) DEFAULT 'Entered'
);
解决方案
有一种方法,称为检查约束(参见第 5 - 7 行)(设置为接受type1
或type2
;其他值是不允许的):
SQL> CREATE TABLE AccountRrequest
2 (
3 RequestId NUMBER PRIMARY KEY,
4 Branch VARCHAR2 (15),
5 Account_Type VARCHAR2 (15)
6 CONSTRAINT ch_acctype CHECK
7 (account_type IN ('type1', 'type2')),
8 Title VARCHAR2 (4),
9 FirstName VARCHAR2 (15),
10 LastName VARCHAR2 (15),
11 Birthday DATE, -- DEFAULT (MM - DD - YYYY),
12 WorkPhone NUMBER (10),
13 HomePhone NUMBER (10),
14 Address VARCHAR2 (30),
15 State VARCHAR2 (15),
16 Zip NUMBER (10),
17 Email VARCHAR2 (30),
18 Status VARCHAR2 (10) DEFAULT 'Entered'
19 );
Table created.
SQL> insert into accountrrequest (requestid, account_type) values (1, 'type3');
insert into accountrrequest (requestid, account_type) values (1, 'type3')
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_ACCTYPE) violated
SQL> insert into accountrrequest (requestid, account_type) values (1, 'type1');
1 row created.
SQL>
此外,无法按照您的方式设置默认“格式”,因此我在第 11 行对其进行了评论。默认值可以是 eg sysdate
,但在这里没有意义,因为我认为没有人是“今天”出生的,即您将在该表中插入行的那一天。如果是这样,你会
Birthday DATE DEFAULT TRUNC(SYSDATE),
此外,在这种情况下,它不是接受某些值的“变量” - 它是column。
最后,看起来表名有错字。真的AccountRrequest
吗(“Rr”请求中有 2 个“R”?)
推荐阅读
- dart - dart 类型的限制
- android - 位图在某些手机上无法正确调整大小
- javascript - 无法读取未定义的属性(读取“删除”)
- amazon-web-services - 控制台需要 MFA 的 AWS 策略,但 CLI 不需要
- http - HTTP 标头中的“pragma: no-cache”和“expires: Mon, 01 Jan 1990 00:00:00 GMT”有什么区别?
- google-analytics - 如何获取设置为表单事件提交的目标的 UTM 数据
- reactjs - 反应当我们创建一个名为“App”的函数时,返回的 html 会运行但如果有其他则不起作用?
- c++ - 如何在 B 类的构造函数中实例化 C++ 类 A,使其对象可用于成员函数
- nanoframework - 我想在 .net NanoFramework 上使用 c++ 代码,我该怎么做?
- typescript - TypeScript:从可区分的联合推断类型以创建地图?