在oracle中我可以指定列,这应该会触发触发器:
create or replace trigger my_trigger
before update of col1, col2, col3 on my_table for each row
begin
// the trigger code will be executed only if col1 or col2 or col3 was updated
end;
Run Code Online (Sandbox Code Playgroud)
现在我想要执行以下操作:当只更新一列时,我不希望触发器触发.这怎么可能?
我可以列出除一个列之外的所有列,这些列不应该触发触发器.对于包含许多列的表来说,这非常麻烦.
另一种方法是使用UPDATING函数,如下所示:
if not updating('COL3') then ...
Run Code Online (Sandbox Code Playgroud)
但是,如果我立刻更改了COL1 和 COL3,则该语句的计算结果为false.这不是我想要的,因为我只想更新一列(COL3)时限制执行.
这在Qt Creator中是一个非常令人沮丧的错误信息: ’XYZ’ does not name a type.这通常意味着类中存在一个错误XYZ,导致编译器无法生成类型,但是没有关于出错的其他提示.
有什么建议?
我在这里遇到一个难题,不管感谢,我的意思是任何帮助=)
我是一名经验丰富的开发人员,我是Objective-C/iPhone/Cocoa的新手.
我想创建一个类控制器,我可以将NSMutableArray作为参数传递.
然后,我们有:
selTimeIntController = [[SingleSelectPickerViewController alloc] initWithSettings: listOfIntervals :kAlarmIntervalStr :myDataHolder.alarmInterval];
[self.navigationController pushViewController: selTimeIntController animated: YES];
[selTimeIntController release];
Run Code Online (Sandbox Code Playgroud)
这个listOfIntervals是一个已经是alloc/init的NSMutableArray*.
在我的SingleSelectPickerViewController上,我们有:
-(id)initWithSettings:(NSMutableArray*)sourceArray :(NSString*)viewCurrentValue :(NSString*)viewTitle {
if(self = [self initWithNibName: kNibName bundle: [NSBundle mainBundle]]) {
listOfIntervals = [NSMutableArray arrayWithArray: (NSMutableArray*)sourceArray];
currentValue = [[NSString alloc] initWithString: viewCurrentValue];
title = [[NSString alloc] initWithString: viewTitle];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
通过调试,我能够在SingleSelectPickerViewController上看到我的listOfIntervals.
这里我们有SingleSelectPickerViewController'dealloc:
- (void)dealloc {
[super dealloc];
[listOfIntervals release];
[currentValue release];
[title release];
}
Run Code Online (Sandbox Code Playgroud)
但是,每次我实例化我的SingleSelectViewController时,我都会收到一个带有以下堆栈的EXEC_BAD_ADDRESS:
#0 0x96132688 in objc_msgSend ()
#1 0x00003ee2 in -[SingleSelectPickerViewController tableView:numberOfRowsInSection:] …Run Code Online (Sandbox Code Playgroud) 为什么我在Qt Creator中收到此警告:`inline function'bool Lion :: growl()'使用但从未定义过?
我仔细检查了我的代码,并有一个声明
inline bool growl ()in Lion(lion.h)
以及相应的实施lion.cpp:
inline bool Lion::growl ()
这是怎么回事?
编辑:我的假设是,在.cpp文件中定义实际的内联方法是合法的(inline关键字警告编译器在其他地方查找方法体),或者我错了?
我不想让我的头文件与实现细节混乱.
我一直在C语言编程25年,但从未使用过C++.我现在需要学习C++编程的基础知识.任何人都可以推荐最适合我的在线教程(或失败的那本书).谢谢.
编辑:我实际上需要C++纯粹是为了向一个庞大而老的C程序添加几个脏黑客的目的.将整个程序转换为正确编写的OO代码在经济上是不可行的.有些人批评了建议的解决方案,因为他们会让我走上成为"C级程序员而不懂C++的C++程序员"的道路 - 但实际上这完全符合我的要求.
编辑:顶部投票答案中的链接似乎现在被打破,但文件似乎存在于多个地方 - 例如这里.
似乎没有简单的答案,但是有没有可以安全地做出关于何时可以访问静态类字段的假设?
编辑:唯一安全的假设似乎是所有静态都在程序开始之前初始化(调用main).那么,只要我不参考其他静态初始化代码中的静态,我就没有什么可担心的了?
我在某处读到如果你想要一个C/C++函数来返回一个字符数组(而不是std :: string),你必须返回const char*而不是char*.执行后者可能会导致程序崩溃.
有人能够解释这是否属实?如果是真的,为什么从一个如此危险的函数返回一个char*?谢谢.
const char * my_function()
{
....
}
void main(void)
{
char x[] = my_function();
}
Run Code Online (Sandbox Code Playgroud) 如何昂贵是一个转换float的double?这int对long转换来说是微不足道的吗?
编辑:我假设一个平台,其中float是4个字节,double是8个字节
根据emacs信息页面,以下是启用iswitchb-mode的方法:
要启用Iswitchb模式,类型
M-x iswitchb-mode,或自定义变量iswitchb-mode来t
所以我把以下内容放在我的.emacs中:
(setq iswitchb-mode t)
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用.在搜索emacs wiki之后,我发现我需要使用它:
(iswitchb-mode 1)
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么我需要以这种方式启用它吗?我想更好地了解elisp,而不仅仅是复制和粘贴来自地方的东西.
我和朋友写了一个加密模块,我们希望将它移植到多种语言,这样它就不是特定于平台的加密.最初是用C#编写的,我把它移植到C++和Java中.C#和Java都将以大约40 MB/s的速度加密,但C++只能以大约20 MB/s的速度加密.为什么C++运行速度要慢得多?是因为我使用的是Visual C++吗?
我该怎么做才能加快我的代码速度?是否有更好的编译器可以更好地优化C++?
我已经尝试过优化代码本身,比如使用x >> 3代替x / 8(整数除法),或者y & 63代替y % 64和其他技术.如何以不同方式构建项目以使其在C++中更具性能?
编辑:
我必须承认,我没有研究过编译器如何优化代码.我将在大学里上课,致力于学习编译器和口译员.
至于我在C++中的代码,它并不是很复杂.有NO包括,有"基本"数学以及我们称之为"状态跳跃"以产生伪随机结果的东西.我们所做的最复杂的事情是在初始散列阶段实际执行加密和未经检查的乘法的按位运算.有动态分配的2D数组,它们在Encryption对象的生命周期内保持活跃状态(并在析构函数中正确释放).这里只有180行.好吧,所以我的微观优化不是必要的,但我应该相信它们不是问题,而是时间问题.要真正深入研究,这是程序中最复杂的代码行:
input [L + offset] ^ = state [state [SIndex ^ 255]&63];
我不是在移动数组,也不是在处理对象.
从语法上讲,整个代码集运行完美,如果我用C#加密某些内容并用C++或Java解密它,它将无缝地工作,所有3种语言都会按照你的预期进行交互.
我不一定希望C++比C#或Java(彼此在1 MB/s之内)运行得更快,但我确信有一种方法可以让C++以同样快的速度运行,或者至少比它更快现在.我承认我不是C++专家,我肯定不会像你们许多人那样经验丰富,但如果我能将99%的代码从C#剪切并粘贴到C++并让它在5中工作分钟,然后我有点说,执行需要两倍的时间.
重新编辑:我在Visual Studio中发现了一个我忘记设置的优化.现在C++的运行速度比C#快50%.感谢所有提示,我在研究中学到了很多关于编译器的知识.
c++ ×6
qt ×2
qt-creator ×2
c ×1
c# ×1
char ×1
cocoa-touch ×1
const ×1
double ×1
elisp ×1
emacs ×1
memory-leaks ×1
objective-c ×1
optimization ×1
oracle ×1
plsql ×1
sql ×1
static ×1
triggers ×1