在Oracle PL / SQL语言中,我想阻止用户使用delete * from table,除非指定了主键。
我怎么能实现这个目标?
我刚刚发现了一个类似的问题,但用不同的语言:prevent delete * from table unless primary key specified
您能否帮我找到Oracle PL / SQL语言的解决方案?
编辑:
SELECT * FROM V$VERSION;
BANNER,CON_ID
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production,0
PL/SQL Release 12.1.0.2.0 - Production,0
CORE 12.1.0.2.0 Production,0
TNS for IBM/AIX RISC System/6000: Version 12.1.0.2.0 - Production,0
NLSRTL Version 12.1.0.2.0 - Production,0
答案 0 :(得分:2)
正如在引用的线程中观察到的那样,此要求相当于我想减慢在我的数据库中执行的每个删除。更不用说有时需要批量删除。
这是尝试将技术修复应用于政治情况,流程失败的典型示例。我曾经认识一位开发人员,他开始删除大量(数百万行)表,因为他们不知道如何在PL / SQL中调换变量。但是,由于一个人的愚蠢错误,惩罚整个开发团队是错误的。
正确的解决方案是实施其中一项或两项:
答案 1 :(得分:1)
不确定,但如果违反约束,删除将失败,因此我要查看是否可以创建将被违反的约束(例如,存在必须首先删除子记录的外键约束)。