Plsql 根据标志插入记录

Plsql 根据标志插入记录,plsql,Plsql,我有一张表,上面写着tb\u加载\u文件。 它包含字段 文件名、文件日期、文件位置、文件状态 现在,文件状态可以是x或y。 要求x状态可以有多个记录,用于组合 (文件名、文件日期、文件位置),但y状态只有一条记录 e、 g 文件名文件日期文件位置状态 abc.txt 2007年10月12日纽约X abc.txt 2007年10月12日纽约X abc.txt 2007年10月12日纽约Y abc.txt 2007年10月12日纽约Y--不允许 设计这些表格的最佳方式是什么? A.插入前选择数据 B

我有一张表,上面写着tb\u加载\u文件。 它包含字段 文件名、文件日期、文件位置、文件状态

现在,文件状态可以是x或y。 要求x状态可以有多个记录,用于组合 (文件名、文件日期、文件位置),但y状态只有一条记录

e、 g

文件名文件日期文件位置状态 abc.txt 2007年10月12日纽约X abc.txt 2007年10月12日纽约X abc.txt 2007年10月12日纽约Y abc.txt 2007年10月12日纽约Y--不允许 设计这些表格的最佳方式是什么?
A.插入前选择数据
B用于检查值是否存在的触发器
或任何其他。
请注意

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


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

您能在此澄清要求吗?为什么最终记录“不允许”?听起来好像你在说任何给定的Y记录都必须是唯一的,但X记录不一定是唯一的。然而,如果这是真的,那么你的例子是令人困惑的。不清楚为什么最后一行是不允许的。文件名、文件日期和文件位置的组合与前两行相同,但它们是否正确?也许再解释一下“状态”的含义会有所帮助。在数据复制方面+1个有效点@AvimAube,您可能想考虑添加尤拉伊建议的计数,或者可以分割/标准化表以避免重复。 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