根据标志插入记录

发布于 2024-08-08 06:24:32 字数 508 浏览 0 评论 0原文

我有一个名为 tb_load_files 的表。 它包含字段 file_name、file_date、file_loc、file_status

现在,File_status 可以是 x 或 y。 要求是 x 状态可以有多个记录,用于组合 (file_name, file_date,file_loc) 但 y 状态只有一条记录。

例如,

file_name  file_date     file_loc  status
abc.txt     12-oct-07     NY         X
abc.txt     12-oct-07     NY         X
abc.txt     12-oct-07     NY         Y

abc.txt     12-oct-07     NY         Y    --  NOT ALLOWED

设计这些表格的最佳方法是什么?
 一个。插入前选择数据
  b.触发检查值是否存在
或任何其他。 请指教

I have a table say tb_load_files.
It contains fields
file_name, file_date,file_loc,file_status

Now, File_status cane be x or y.
The requirement is there can be multiple records for x status for combination of
(file_name, file_date,file_loc) but only one record for y status.

e.g.

file_name  file_date     file_loc  status
abc.txt     12-oct-07     NY         X
abc.txt     12-oct-07     NY         X
abc.txt     12-oct-07     NY         Y

abc.txt     12-oct-07     NY         Y    --  NOT ALLOWED

what could be the best way of designing these table?
  a. selecting data before insert
  b. trigger to check if value exists
or any other.
Please advice

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱,才寂寞 2024-08-15 06:24:32

如果有数千个条目,我建议不要通过使用具有相同数据的多行来浪费空间,而是添加一列 COUNT。数据可以是唯一的,并且可以在必要时使用索引更好地优化。

然后,创建可由客户端调用的 PL/SQL 过程,或者(如果客户端希望使用表)创建可更新视图 + INSTEAD OF INSERT/UPDATE/DELETE 触发器。当状态为 X 时,其中的代码只会增加现有记录的 COUNT,如果状态为 Y,则抛出错误。

If there is going to be thousands of entries, I'd suggest that instead of wasting space by using multiple rows with the same data, add a column COUNT. The data can be then unique and can be better optimized with indexes if necessary.

Then, either create PL/SQL procedure callable by client, or (if client expects to work with table) create a updatable view + INSTEAD OF INSERT/UPDATE/DELETE triggers. Code inside it will just increase COUNT on existing record when status is X, or throw error if status is Y.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文