我有一个AFTER INSERT OR UPDATE OR DELETE,我正在写存储发生在某个表中的每个记录修改的触发,通过复制INSERT和UPDATE :NEW值成镜表,并DELETE在:OLD值.
我可以通过有条件地将:NEW或者:OLD记录传递给一个程序然后插入我的历史表中来大大地解决我的代码.不幸的是,我似乎找不到通过整个:OLD或:NEW记录的方法.
我是否遗漏了某些内容,或者在调用插入过程时是否无法避免枚举每个列:NEW和:OLD列?
我想做以下事情:
DECLARE
PROCEDURE LOCAL_INSERT(historyRecord in ACCT.ACCOUNTS%ROWTYPE) IS
BEGIN
INSERT INTO ACCT.ACCOUNTS_HISTORY (ID, NAME, DESCRIPTION, DATE) VALUES (historyRecord.ID, historyRecord.NAME, historyRecord.DESCRIPTION, SYSDATE);
END;
BEGIN
IF INSERTING OR UPDATING THEN
LOCAL_INSERT(:NEW);
ELSE --DELETING
LOCAL_INSERT(:OLD);
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
但我坚持这样做:
DECLARE
PROCEDURE LOCAL_INSERT(id in ACCT.ACCOUNTS.ID%TYPE,
name in ACCT.ACCOUNTS.NAME%TYPE,
description in ACCT.ACCOUNTS.DESCRIPTION%TYPE) IS
BEGIN
INSERT …Run Code Online (Sandbox Code Playgroud) 出于习惯,我一直在我的应用程序代码中使用try/catch块来处理所有SQL查询,并在catch块的开头进行回滚.我也一直在承诺那些成功的.这是必要SELECT的吗?它是否释放了数据库方面的东西?select语句不会改变任何数据,所以它似乎有点无意义,但也许有一些我不知道的原因.
例如
try {
$results = oci_execute($statement)
oci_commit($connection);
return $results;
}
catch {
oci_rollback($connection)
throw new SqlException("failed");
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含多个索引的表,其中几个重复相同的列:
Index 1 columns: X, B, C, D
Index 2 columns: Y, B, C, D
Index 3 columns: Z, B, C, D
Run Code Online (Sandbox Code Playgroud)
我对实践中的索引知识不是很了解,所以我想知道是否有人可以解释为什么X,Y和Z与这些相同的列配对.B是生效日期.对于特定生效日期,C是该表的半唯一密钥ID.D是标识该标识符C的该记录的优先级的序列.
为什么不创建6个索引,每个X,Y,Z,B,C,D一个?
我想在另一个列T中添加一个索引,但在某些情况下我只会单独查询T而在其他情况下我也会指定B,C和D列...所以我应该只创建一个索引以上或我应该为T创建一个,为T(B,C,D)创建一个?
谷歌搜索索引的全面报道时,我没有像预期的那样运气.我能通过解释和B-tree索引的大量例子的任何资源?
我正在使用PHP + Oracle,并且想知道是否有关于在哪里提交我的交易的建议.我调用存储过程来执行所有插入/更新/删除操作,并且当前正在我的存储过程结束时提交.
我在想:
基于存储过程调用是否成功,在我的存储过程中调用commit/rollback与在我的PHP代码中调用oci_commit/oci_rollback之间有什么区别.
哪个更好?最初我在思考存储过程本身,但现在我想知道,如果没有区别,也许它会给我更多的灵活性来提交调用应用程序代码,因为我可以在一个事务中调用几个存储过程而不是每次我想在单个事务中混合/匹配各种SQL语句时编写新的存储过程.
思考?
我有一个显示约300页表格数据的页面.Firefox,Chrome,Safari都运行良好,但IE 7,8和8兼容性视图都很糟糕.当我尝试滚动或按下向上翻页/向下翻页按钮时,它会滞后几秒钟.
分页,较小的数据集和其他可用性建议不适用于此页面.假设我绝对别无选择,只能一次显示所有这些数据......我可以做些什么来调整它?
数据正在通过jQuery/Ajax加载,这似乎至少在某种程度上是可疑的,因为当我创建一个测试页面来直接渲染结果时,它并不是那么慢,但仍然不像其他浏览器那样快速.
我已经成功地使用了像SlickGrid这样的jQuery插件来解决过去类似的问题,但是由于原因需要很长时间来解释它们不是一个选项,即使使用微模板渲染功能也是如此.我主要关注的是我可以在不重新整理页面或引入第三方解决方案的情况下进行调整以提高性能.
简化的DOM会有很大的不同吗?或者IE不能很好地处理通过JavaScript/Ajax带来的数据?
javascript performance internet-explorer-8 internet-explorer-7
我有3个数据库.1链接到2,链接到3.我想查询3中的表,从1.我尝试了third_db_tab @ 3 @ 2,它没有用.想知道这是否可能,如果是,那么语法是什么.
我有一个匿名的pl/sql块,其中包含一个声明的过程以及一个游标.如果我在光标之前声明该过程则失败.是否要求在程序之前声明游标?
pl/sql块中的声明顺序还有哪些其他规则?
这有效:
DECLARE
cursor cur is select 1 from dual;
procedure foo as begin null; end foo;
BEGIN
null;
END;
Run Code Online (Sandbox Code Playgroud)
这失败了,错误 PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following: begin function package pragma procedure form
DECLARE
procedure foo as begin null; end foo;
cursor cur is select 1 from dual;
BEGIN
null;
END;
Run Code Online (Sandbox Code Playgroud) 我有几个不同的包,一个用于我的应用程序的每个逻辑部分.有些软件包变得越来越大,但我希望以某种方式将所有过程/功能分组,而不是将它们分成单独的软件包.有没有办法嵌套或命名空间我的包?
所以,如果我有MYSCHEMA.PKG_PEOPLE它并且它有10个程序和10个函数,那么我无法将CRUD程序移动到MYSCHEMA.PKG_PEOPLE.CRUD.我想保留所有这些项目,PKG_PEOPLE但我想进一步细分它们.
很容易绑定到现有模型的"错误"事件,但确定新模型是否有效的最佳方法是什么?
Car = Backbone.Model.extend({
validate: function(attributes) {
if(attributes.weight == null || attributes.weight <=0) {
return 'Weight must be a non-negative integer';
}
return '';
}
});
Cars = Backbone.Collection.extend({
model: Car
});
var cars = new Cars();
cars.add({'weight': -5}); //Invalid model. How do I capture the error from the validate function?
Run Code Online (Sandbox Code Playgroud) 如果我这样做,python -m SimpleHTTPServer它将提供当前目录中的文件.
我的目录结构如下所示:
/protected/public
/protected/private
/test
Run Code Online (Sandbox Code Playgroud)
我想在我的/test目录中启动服务器,我希望它在/test目录中提供文件.但我希望从/protected/public目录中提取以'/ public'开头的所有服务器请求.
ega请求http://localhost:8000/public/index.html将服务于该文件/protected/public/index.html
内置服务器可以实现这一点,还是必须编写自定义服务器?
oracle ×7
sql ×4
plsql ×3
javascript ×2
php ×2
transactions ×2
b-tree-index ×1
backbone.js ×1
indexing ×1
packages ×1
performance ×1
python ×1
rollback ×1
triggers ×1