Oracle 数据库可以为大写值设置约束吗?

Oracle Database Can set Constraint for Upper Case Values?

我们是否可以在数据库 table 级别设置一个约束,使某些列具有大写或小写值?当我们创建一个 table 时,我们可以设置 NOT NULL 来避免列上有空值。同样,我们可以对大写或小写都这样做吗?

您可以使用检查约束来做到这一点:

create table foo
(
   only_lower varchar(20) not null check (lower(only_lower) = only_lower),
   only_upper varchar(20) not null check (upper(only_upper) = only_upper)
);

我遇到了几乎相同的情况,尝试使用检查约束,但如果用户没有将其作为 UPPER() 或 LOWER() 提及,则会出现错误,因此我采用了如下代码的 TRIGGER 路径。

--creating table
create table user_name (
first_name varchar2(50),
last_name varchar2(50));

--creating trigger
CREATE OR REPLACE TRIGGER TRG_USER_NAME_IU
  BEFORE INSERT OR UPDATE ON USER_NAME
  FOR EACH ROW
BEGIN
  :NEW.FIRST_NAME := UPPER(:NEW.FIRST_NAME);
  :NEW.LAST_NAME := UPPER(:NEW.LAST_NAME);
END;
/

可以测试和分享反馈或评论