根据标志插入记录
我有一个名为 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果有数千个条目,我建议不要通过使用具有相同数据的多行来浪费空间,而是添加一列 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.