根据标志插入记录

时间:2009-10-21 15:07:24

标签: plsql

我有一张桌子说tb_load_files。 它包含字段 file_name,file_date,file_loc,file_status

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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