gpt4 book ai didi

sql - 只允许将 3 行添加到表中以获取特定值

转载 作者:行者123 更新时间:2023-12-04 21:18:13 26 4
gpt4 key购买 nike

我手头有一个问题,我需要将分配给经理的项目数量限制为仅 3 个。表格是:

Manager:
Manager_employee_id(PK)
Manager_Bonus

Project:
project_number(PK)
Project_cost
Project_manager_employee_id(FK)

谁能建议采取什么方法来实现这个?

最佳答案

"How do I implement the restrict to 0,3?"

这需要一个断言,它在 SQL 标准中有定义,但在 Oracle 中没有实现。 (虽然有 moves to have them introduced )。

您可以做的是使用物化 View 来透明地执行它。

create materialized view project_manager
refresh on commit
as
select Project_manager_employee_id
, count(*) as no_of_projects
from project
group by Project_manager_employee_id
/

神奇之处在于:

alter table project_manager
add constraint project_manager_limit_ck check
( no_of_projects <= 3 )
/

如果经理的项目数超过三个,此检查约束将阻止刷新物化 View ,该失败将导致触发插入或更新失败。不可否认,它并不优雅。

因为 mview 在提交时刷新(即事务性),您需要在 project 表上构建日志:

create materialized view log on project

关于sql - 只允许将 3 行添加到表中以获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47280166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com