我正在尝试为我的"Blockbuster-like"电影公司编写一个sql server更新触发器.在我的MOVIES表中,我将movie_id作为PK,另一列名为num_rented,它总共保留了一部电影的租借次数.这个总数是通过我的插入,删除和更新触发器完成的.(我知道有更好的方法可以做到这一点,但我的任务特别要求这样做,所以请理解这一点).CUSTOMER_RENTALS表具有item_rental_id作为PK,MOVIES中的movie_id是FK.
我需要一个更新触发器,只要对CUSTOMER_RENTALS进行更新,它就会更新MOVIES中的num_rentals列.例如,假设movie_id 1已输入,但这是一个错误,它确实是movie_id 2.我希望num_rentals能够反映更新.
这是我到目前为止所做的,但我真的不知道在SET部分放置什么来实现这一目标:
CREATE TRIGGER tr_num_rentals_update
ON customer_rentals
AFTER UPDATE
AS
BEGIN
UPDATE m
SET num_rentals = ??????
FROM movies AS m
INNER JOIN inserted as i on m.movie_id=i.movie_id;
END;
Run Code Online (Sandbox Code Playgroud)
我想某种方式我需要访问已删除的表的值,以将num_rental列恢复到以前的值,但我不知道如何.提前感谢十亿!
我正在使用curl并正确设置所有参数(据我所知),但CURLOPT_TIMEOUT被忽略并允许无限循环。这是我的 Curl 请求的配置:
$user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';
$options = array(
CURLOPT_CUSTOMREQUEST => "GET", //set request type post or get
CURLOPT_POST => false, //set to GET
CURLOPT_USERAGENT => $user_agent, //set user agent
CURLOPT_COOKIEFILE => dirname(__FILE__)."/cookie.txt", //set cookie file
CURLOPT_COOKIEJAR => dirname(__FILE__)."/cookie.txt", //set cookie jar
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_SSL_VERIFYPEER, FALSE, //ignore ssl
CURLOPT_PROXY =>$proxy['ip'],
CURLOPT_PROXYPORT =>$proxy['port'],
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // …
Run Code Online (Sandbox Code Playgroud) 我AptPkg::Cache
对精确包中的对象的构造函数有一个非常奇怪的问题libapt-pkg-perl (v. 0.1.25)
.
perl脚本旨在为三种不同的体系结构(i386,armel,armhf)下载debian软件包.对于每个架构,我执行以下操作:
AptPkg::Config '$_config'
为所需的体系结构配置正确的参数和包列表.
使用创建缓存对象AptPkg::Cache->new
.
调用方法AptPkg::Cache->policy
来创建AptPkg::Policy
对象.
调用方法AptPkg::Policy->candidate("program-name")
.
下载所选体系结构的包.
这对Ubuntu Lucid很有效,但是使用Ubuntu Precise,我只能下载定义的第一个架构的软件包.对于其他两个体系结构,将没有安装候选者(方法AptPkg::Policy->candidate("Package-Name")
不返回对象).
我尝试构建一个解决方法,我找到了一个解决方案,该脚本如何适用于所有三种体系结构,没有问题,精确:
如果我AptPkg::Cache->new
连续两次创建缓存对象(有),它就会工作,脚本会下载所有三种架构的debian软件包:
my $cache = AptPkg::Cache->new;
$cache = AptPkg::Cache->new;
Run Code Online (Sandbox Code Playgroud)
我确定问题与该方法有关,AptPkg::Cache->new
因为我检查了其他所有内容,可能导致问题的原因,两次.所有配置变量都设置正确,我甚至AptPkg::Cache->new
为每个架构获得了不同的Hash ,但似乎我忽略了一些重要的东西.
我对perl不太熟悉,所以我问你们有没有人可以解释为什么脚本与变通方法一起工作但不是没有它.如果在脚本中有两次相同的代码行,那么看起来很奇怪.
我有一个奇怪的问题.我最近在我们的测试服务器上设置了一个进程,以便从另一个脚本异步调用脚本.直到最近,它一直在测试期间工作.在继续之前,让我先介绍一些技术细节.来自原始脚本的调用看起来像这样(我更新了调用的逻辑):
exec('cmd /S /C "'.$command.' 1> nul 2>&1"');
使用以下逻辑创建$ command:
$args = array(
'php',
'"'.getcwd().'{absolute path to a php script}"',
escapeshellarg($job_id),
escapeshellarg($vhost),
escapeshellarg($debug),
);
$command = implode(' ', $args);
Run Code Online (Sandbox Code Playgroud)
PHP版本为5.3.10,服务器是运行Windows Server 2008 R2 Standard的托管盒.
令我难以置信的是,上周这次工作正常.我对代码做了一些更改(看似无关),甚至在恢复我的更改以查看是否存在问题之后 - 此过程仍然存在.
在这一点上,我很神秘,欢迎任何见解,想法或帮助.
一些Perl书籍建议在调用类方法时使用括号,这说明这有助于使解析器不必猜测代码的意图.但是,我所看到的几乎所有Perl代码(包括cpan上的模块)在调用没有参数的方法时很少使用括号.
放下这些括号是否正常,或者我应该总是输入它们.
我编写了一个小测试代码来衡量调用带括号和无括号的方法之间的区别,并且它确实显示了仅使用两种方法的类在1%和2%之间的微小差异.我想如果班级很大,这可能会增加.
这是我用来测试的测试脚本:
#!/usr/bin/perl
use Benchmark qw(:all);
{
package Messages;
sub new {
my ($self) = @_;
return bless {}, $self;
}
sub message {
my ($self) = @_;
return "Hello world";
}
sub another {
my ($self) = @_;
return "Another Hello world";
}
}
my $class = Messages->new();
cmpthese(10_000_000, {
'with () ' => sub { $class->message() },
'without () ' => sub { $class->message },
});
Run Code Online (Sandbox Code Playgroud)
这是基准测试的结果:
Rate without () with ()
without () 3320053/s -- …
Run Code Online (Sandbox Code Playgroud) 我正在尝试记录脚本执行的某些部分.日志应显示在第二个tty,并写入日志文件.
我可以用一个简单的方法做到:
echo "Hello log" > /dev/tty2
echo "Hello log" > /var/log/my_logs
Run Code Online (Sandbox Code Playgroud)
但它非常不舒服.我还可以将echo重定向到特定的地方:
exec 1<>/var/log/my_logs
exec 2>&1
Run Code Online (Sandbox Code Playgroud)
但是如何将STDOUT同时重定向到/ dev/tty2和/ var/log/my_logs?