sql - Oracle SQL 检查
问题描述
我正在尝试实现一个 Oracle SQL 数据库,在我的一个表中,我必须引入一个限制,该限制不允许同一组中有超过 4 人:
我试过这个:
CREATE TABLE PERSON (name VARCHAR (20) PRIMARY KEY, group VARCHAR (3), CHECK (COUNT (*) group FROM PERSON) <=4);
还有这个(除其他外):
CREATE TABLE PERSON (name VARCHAR (20) PRIMARY KEY, group VARCHAR (3), CHECK NOT EXISTS (Select COUNT(*) FROM PERSON GROUP BY group HAVING COUNT(*) > 4);
但是我每次都遇到错误(ORA-00934:此处不允许使用组功能或 ORA-02251:此处不允许使用子查询。
正确的方法是什么?
解决方案
您对此有多个问题
CREATE TABLE PERSON (
name VARCHAR(20) PRIMARY KEY,
group VARCHAR(3),
CHECK (COUNT (*) group FROM PERSON) <=4);
);
- Oracle 明确
VARCHAR2()
倾向于VARCHAR()
. GROUP
是一个非常糟糕的列名称,因为它是一个关键字。当然,您可以找到类似group_name
的名称或其他名称。CHECK
约束仅在一行中起作用。
处理此问题的最佳方法可能是:
- 创建一个名为
groups
-- 或其他名称的新表。它应该有一个group_id
以及group_name
和num_persons
。 - 添加触发器以使s、s 和s to
person
保持counter
最新。insert
delete
update
person
groups
例如,添加一个检查约束check (num_persons <= 4)
。
推荐阅读
- node.js - how to use nested select query in knex
- python - pandas.DataFrame.round 输出不同的小数位数
- amazon-web-services - AWS SES send email lambda not sending every time
- r - Plotting only if values fall into specific range
- mysql - not plausible MySQL error: #1136 - Column count doesn't match value count at row 1
- javascript - 如何比较此循环中的日期值以查找重复项
- jenkins - 升级后 Jenkins 管道失败 (SandboxTransformer.forbidIfFinalizer)
- php - Laravel jQuery 未定义,脚本标签中没有延迟
- python - 泡菜python的问题
- numpy - 在numpy python中的矩阵周围添加一个零的“框架”