我在编写表创建的Integrity Constraint检查时遇到了困难。以下是我的表创建声明:
CREATE TABLE User (
UName VARCHAR(15) PRIMARY KEY,
FName VARCHAR(15),
LName VARCHAR(15)
);
我正在寻找的完整性约束是UName(用户名)不能包含名字和/或姓氏。
我可以在没有PL / SQL的情况下编写吗?
非常感谢任何帮助。
答案 0 :(得分:4)
是的,您需要将其定义为TABLE CHECK CONSTRAINT
(不是针对UNAME列,因为它引用同一表中的其他列),如下所示:
CREATE TABLE User
(
UNAME VARCHAR(100),
FNAME VARCHAR(100),
LNAME VARCHAR(100),
CONSTRAINT CHECK_USERS
CHECK(INSTR(UNAME, FNAME) = 0 AND INSTR(UNAME, LNAME) = 0)
)
答案 1 :(得分:0)
为了使sql更可靠,我建议使用大写。用户肯定会努力使登录看起来像上一个/第一个名字但我偶然发现他们在名/姓中使用第一个大写字母但用户名使用小写的情况,反之亦然。
所以考虑使用
CREATE TABLE User
(
UNAME VARCHAR(100),
FNAME VARCHAR(100),
LNAME VARCHAR(100),
CONSTRAINT CHECK_USERS
CHECK(INSTR(upper(UNAME), upper(FNAME)) = 0 AND INSTR(upper(UNAME), upper(LNAME)) = 0)
)