我经常使用"ON DELETE CASCADE",但我从不使用"ON UPDATE CASCADE",因为我不太确定在什么情况下它会有用.
为了便于讨论,请看一些代码.
CREATE TABLE parent (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
);
CREATE TABLE child (
id INT NOT NULL AUTO_INCREMENT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id)
REFERENCES parent(id)
ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)
对于"ON DELETE CASCADE",如果id
删除了具有a的父级,parent_id = parent.id
则将自动删除子级中的记录.这应该没问题.
这意味着当id
更新父级时,"ON UPDATE CASCADE"会做同样的事情吗?
如果(1)为真,则意味着如果parent.id
不可更新(或永远不会更新),则不需要使用"ON UPDATE CASCADE",就像它是AUTO_INCREMENT
或者总是设置为TIMESTAMP
.是对的吗?
如果(2)不成立,在其他什么情况下我们应该使用"ON UPDATE CASCADE"?
如果我(由于某种原因)更新了child.parent_id
不存在的内容,它会被自动删除吗?
好吧,我知道,上面的一些问题可以通过程序测试来理解,但我也想知道这是否依赖于数据库供应商.
请说清楚.
我开发了一个小的Javascript/jQuery程序来访问内部使用的pdf文件集合.如果文件确实存在,我希望突出显示pdf文件的信息div.
有没有办法以编程方式确定文件的链接是否被破坏?如果是这样,怎么样?
任何指南或建议都是适当的.
我知道C语言的规范并没有规定每个整数类型的确切大小(例如int
).
我想知道的是:C(不是C++)中是否有一种方法来定义具有特定大小的整数类型,以确保它在不同的体系结构中是相同的?喜欢:
typedef int8 <an integer with 8 bits>
typedef int16 <an integer with 16 bits>
Run Code Online (Sandbox Code Playgroud)
或者任何其他允许程序的其他部分在不同体系结构上编译的方式.
我问一个问题,关于C型尺寸,我得到一个很好的答案,但我意识到,我可能不会制定这个问题非常好是我的目的.
我的背景来自计算机工程师,然后转到软件工程师,所以我喜欢计算机架构,并且总是考虑制作VM.我刚刚完成了一个有趣的Java项目,我很自豪.但是有些法律问题我现在无法开源,而且我现在有空闲时间.所以我想看看我是否可以在C上制作另一个VM(速度更快),只是为了娱乐和教育.
事情是,我上次写一篇非琐事C问题时,我不是一个C程序,这是10多年前的事了.我是Pascal,Delphi,现在是Java和PHP程序员.
我可以预见有很多障碍,我正试图解决一个问题,那就是访问现有的库(在Java中,反射解决了这个问题).
我计划通过拥有一个数据缓冲区(类似于堆栈)来解决这个问题.我的VM客户端可以编程将数据放入这些堆栈,然后再指向本机函数.
int main(void) {
// Prepare stack
int aStackSize = 1024*4;
char *aStackData = malloc(aStackSize);
// Initialise stack
VMStack aStack;
VMStack_Initialize(&aStack, (char *)aStackData, aStackSize);
// Push in the parameters
char *Params = VMStack_CurrentPointer(&aStack);
VMStack_Push_int (&aStack, 10 ); // Push an int
VMStack_Push_double(&aStack, 15.3); // Push a double
// Prepare space for the expected return
char *Result = VMStack_CurrentPointer(&aStack);
VMStack_Push_double(&aStack, 0.0); // Push an empty double for result
// Execute
void (*NativeFunction)(char*, char*) = &Plus; …
Run Code Online (Sandbox Code Playgroud) c memory-management cross-platform low-level vm-implementation
在编写bash脚本时,使用Imagick的命令帮助创建宝丽来缩略图convert
.我遇到了一个问题.虽然,我设法解决这个问题(实际上,因为convert
足够灵活),我仍然想知道如何在没有这种具体解决方法的情况下解决这个问题.
所以基本上,bash脚本将获得可能包含空格的标题值.我想使用该标题作为参数convert
.如果标题为空(''),我将不会对convert命令使用'-caption'选项.像这样:
CAPTION="Is this Cute?" # The actual value will be tacked from the parameter of this bash.
IN_FILE="resources/puppy.png"
OUTFILE="resources/puppy_polaroid.png"
# If CAPTION is not empty, reformat CAPTION
if [ "$CAPTION" != "" ]; then CAPTION="-caption \"$CAPTION\""; fi
# otherwise, do not use '-caption' add all
COMMAND="convert $CAPTION \"$IN_FILE\" \"$OUTFILE\""
echo "Command: $COMMAND" #This echo a value command
`$COMMAND`
Run Code Online (Sandbox Code Playgroud)
echo回显了可以复制的value命令,可以粘贴到终端并运行.但是bash没有运行.我怎么能这样做?
注意:如果是convert
,-caption ""
请完成工作.我知道这一点,目前正在使用它作为解决方法.
在此先感谢您的帮助.
编辑:从答案,这里是现在适合我的代码.
... # Get CAPTION …
Run Code Online (Sandbox Code Playgroud) 我为我的女朋友建了一个网站,她最近想知道谁在访问她的网站.所以我使用MindMax数据库,我得到了按国家/地区访问的列表和计数.
但是,在对其进行监控几天之后,我们惊讶地发现,某些国家/地区的访问权限是网站所针对的.当然,这并不意味着我认为来自这些国家的人们不可能感兴趣,但这只会引起准确性问题.那么GeoIP和$_SERVER['REMOTE_ADDR']
(用于查找)的准确度如何?
我并不关心那些故意隐藏或伪造他们的知识产权的人.我只是更想知道是否有可能无意中使这种不准确的事情(例如,路由).
我有一个调用python脚本的PHP脚本(我无法编辑其他人)。在CLI上可以正常运行,但是一旦我以CGI身份运行,它就会失败,并显示错误“ bzr:错误:无法导入bzrlib和依赖项”。
我猜想它与PYTHONPATH有关,所以我回声了它,发现在Apache环境中它是空的。
我尝试将其设置为“ .htaccess”(位于Dreamhost上,因此无法设置httpd.conf)为:
SetEnv PYTHONPATH "/home/nawaman/lib/python"
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用。
我该怎么办?在此先感谢您的帮助。
我使用Bazaar,我喜欢它.通常,我只是创建不同的分支并分别管理它们.我刚刚发现所有这些分支都可以放入存储库.如果我理解正确,这应该节省内存并提高速度,因为分支之间的一些共同祖先是共享的.Q1:我理解这一点吗?
另一件事是,当我尝试使用它时,我发现了一些我真的不明白的问题.这就是我的尝试方式.
bzr init-repo --trees TestBzrRepo
cd TestBzrRepo
bzr init trunk
mkdir branches
cd branches
bzr branch ../trunk b01-Add-file2-f
echo 'This is file 2' > file2.f
bzr add file2.f
bzr commit -m "Add file 2"
cd ../../trunk
echo 'This is file 1' > file1.f
bzr add file1.f
bzr commit -m "Add file 1"
cd ../branches/b01-Add-file2-f
Run Code Online (Sandbox Code Playgroud)
从现在开始,如果我这样做bzr pull ../../trunk
,我得到:
bzr: ERROR: These branches have diverged. Use the missing command to see how.
Use the merge command to reconcile them.
Run Code Online (Sandbox Code Playgroud)
如果我这样做bzr …
我使用以下代码从文件A.txt的所有行中删除前导和尾随空格
sed 's/^[ \t]*//;s/[ \t]*$//' ./A.txt > ./B.txt
Run Code Online (Sandbox Code Playgroud)
问题出现在开头或结尾有的位置.所以说例如,以字符串"timezone"开头的原始行变为"imezone"
你能告诉我这里发生了什么吗?如果有一个已知的问题解决方案.
提前致谢.
我希望VB.NET正则表达式为以下格式
7966-591739
我的意思是用户必须首先输入4个 数字字符,然后输入" - ",然后输入6个数字字符,然后输入数字和字符.在我的情况下,用户也可以输入
7966-591739 转 562
7966-591739 x 434
请指教!
我试图了解C中的低级内存管理器,特别是Stack.据我所知,当一个函数被调用时,一个返回地址被推入堆栈.然后是局部变量.
所以我写了一个小程序来调查这个.这是我的计划:
#include <stdio.h>
void TestStack();
void DoTestStack() {
char x1 = 1;
char x2 = 2;
char x3 = 3;
char x4 = 4;
char *x = &x4;
printf("TestStack: %08X\n", (&TestStack));
printf("\n");
int i;
x = &x4;
for(i = 0; i < 32; i++)
printf("%02d: %08X : %08X\n", i, *(x + i), *(x - i));
printf("\n");
printf("x1: %02X\n", x1);
printf("x2: %02X\n", x2);
printf("x3: %02X\n", x3);
printf("DONE!!!\n");
}
void TestStack() {
DoTestStack();
}
void main() {
TestStack() ;
}
Run Code Online (Sandbox Code Playgroud)
基本上,它调查位置x4之前和之后的所有内存.这应该很好地覆盖了返回地址的位置. …
当我向输入添加背景图像时,它的边框也发生了变化。
所以现在我的按钮看起来与其他按钮不同。
我怎样才能让它们看起来一样?
这是这个问题的 JsFriddle
http://jsfiddle.net/apLm5rgq/1/
但基本上是
<input id='one' value='One'/>
<br/>
<input id='two' value='Two'/>
Run Code Online (Sandbox Code Playgroud)
和
<input id='one' value='One'/>
<br/>
<input id='two' value='Two'/>
Run Code Online (Sandbox Code Playgroud)
提前谢谢大家。