【问题标题】:Specifying a limit for a value in SQL when a particular value is met当满足特定值时在 SQL 中指定值的限制
【发布时间】:2022-01-17 18:32:29
【问题描述】:

在 SQL 中,如何在满足另一个条件时为属性值设置限制? 例如,一个学生最多可以借 3 个资源,教职员工最多可以借 6 个

Create Table USER_T
(   UserID int PRIMARY KEY NOT NULL,
    UserType varchar (25) NOT NULL,
    No_of_Resources_Borrowed int check (No_of_Resources_Borrowed=<6)
    CONSTRAINT con_user_typ check (UserType IN ('Student','Staff'))
);

【问题讨论】:

  • 您使用的是哪个 dbms?
  • 提示:AND/OR 在约束中,
  • 我正在使用 Oracle

标签: sql oracle


【解决方案1】:

你想要一个 CONSTRAINT 子句

Create Table USER_T
(   UserID int PRIMARY KEY NOT NULL,
    UserType varchar (25) NOT NULL,
    No_of_Resources_Borrowed int NOT NULL,
    CONSTRAINT Resources_by_type CHECK (
      No_of_Resources_Borrowed 
      <= case UserType when 'Student' then 3 when 'Staff' then 6 else 2147483647 end ),
    CONSTRAINT con_user_typ CHECK (UserType IN ('Student','Staff'))
    );

【讨论】:

  • 2147483647 编码总是让人大跌眼镜。
  • 当然,我更喜欢 INT_MAXVALUE ..
  • 同样的事情。顺便说一句,不需要else,NULL 会通过!
猜你喜欢
  • 1970-01-01
  • 2022-12-18
  • 2021-02-09
  • 1970-01-01
  • 2021-06-26
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
相关资源
最近更新 更多