小编pil*_*row的帖子

哪些SQL数据库支持CHECK约束中的子查询?

哪些SQL数据库(如果有)支持CHECK约束中的子查询?

目前,据我所知,Oracle,MySQL和PostgreSQL都没有.

编辑

(根据初步答案澄清.)我正在寻找这样的事情:

CREATE TABLE personnel (
  ...,
department VARCHAR(64) NOT NULL,
salary NUMERIC NOT NULL,
CHECK (salary >= (SELECT MIN(p.salary) FROM payranges p WHERE p.dept = department)
        AND
       salary <= (SELECT MAX(p.salary) FROM payranges p WHERE p.dept = department)
)
Run Code Online (Sandbox Code Playgroud)

UPDATE

MS Access和Firebird都支持此功能.

sql subquery check-constraints

8
推荐指数
1
解决办法
1万
查看次数

SQL Server:跨组(而不是组内)的超前/滞后分析功能

很抱歉这篇文章很长,但我提供了复制和粘贴示例数据以及下面的可能解决方案.的的相关部分的问题是在后(水平线以上)的上部.

我有下表

 Dt          customer_id  buy_time     money_spent
 -------------------------------------------------
 2000-01-04  100          11:00:00.00  2
 2000-01-05  100          16:00:00.00  1
 2000-01-10  100          13:00:00.00  4
 2000-01-10  100          14:00:00.00  3
 2000-01-04  200          09:00:00.00  10
 2000-01-06  200          10:00:00.00  11
 2000-01-06  200          11:00:00.00  5
 2000-01-10  200          08:00:00.00  20
Run Code Online (Sandbox Code Playgroud)

并希望查询获取此结果集

 Dt          Dt_next     customer_id  buy_time     money_spent
 -------------------------------------------------------------
 2000-01-04  2000-01-05  100          11:00:00.00  2
 2000-01-05  2000-01-10  100          16:00:00.00  1
 2000-01-10  NULL        100          13:00:00.00  4
 2000-01-10  NULL        100          14:00:00.00  3
 2000-01-04  2000-01-06  200          09:00:00.00  10
 2000-01-06  2000-01-10  200          10:00:00.00  11
 2000-01-06  2000-01-10 …
Run Code Online (Sandbox Code Playgroud)

sql-server lag lead sliding-window sql-server-2012

8
推荐指数
1
解决办法
1万
查看次数

使用SQL查找数据库记录中的间隙(缺少记录)

我有一个连续每小时记录的表.每小时都有一些价值.我想要一个T-SQL查询来检索丢失的记录(缺少时间,间隙).因此,对于下面的DDL,我应该获取缺失小时的记录04/01/2010 02:00 AM(假设日期范围在第一个和最后一个记录之间).使用SQL Server 2005.首选基于集合的查询.

DDL:
CREATE TABLE [Readings](
    [StartDate] [datetime] NOT NULL,
    [SomeValue] [int] NOT NULL
)
INSERT INTO [Readings]([StartDate], [SomeValue])
SELECT '20100401 00:00:00.000', 2 UNION ALL
SELECT '20100401 01:00:00.000', 3 UNION ALL
SELECT '20100401 03:00:00.000', 45
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 gaps-and-islands

7
推荐指数
1
解决办法
3554
查看次数

sh相当于__FILE__

是否有一个等价的__FILE__,给我当前正在执行的文件的路径名?POSIX解决方案首选,bash可以接受,谢谢.

php shell file

7
推荐指数
1
解决办法
2015
查看次数

php flock和fread和fwrite

我看到有人像这样使用flock:

if (!$fp = fopen($file_name, 'wb'))  
{  
    return FALSE;  
}  

if (flock($fp, LOCK_EX))  
{  
    fwrite($fp, serialize($data));  
    flock($fp, LOCK_UN);  
}
Run Code Online (Sandbox Code Playgroud)

这个:

if (!$fp = @fopen($file_name, 'rb'))  
{  
    return FALSE;  
}  

flock($fp, LOCK_SH);  

$data = '';  

if (filesize($file_name) > 0)  
{  
    $data = unserialize(fread($fp, filesize($file_name)));  
}  
Run Code Online (Sandbox Code Playgroud)

但是,其他人是否有可能在fopen通话和flock通话之间编辑文件?和同样的问题fread


编辑:
澄清为什么我问这个...我在这里的代码基于我的问题,在一个mysql缓存的情况下,什么是阻止20人同时能够访问该文件,如果他们所有可以介入fopen和flock之间?

那个代码是万无一失的吗?

php locking file-locking flock

7
推荐指数
1
解决办法
2613
查看次数

为什么glob lstat匹配条目?

这个问题中查看行为,我很惊讶地看到perl lstat()的每个路径都与glob模式匹配:

$ mkdir dir
$ touch dir/{foo,bar,baz}.txt  
$ strace -e trace=lstat perl -E 'say $^V; <dir/b*>' 
v5.10.1
lstat("dir/baz.txt", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
lstat("dir/bar.txt", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
Run Code Online (Sandbox Code Playgroud)

我看到我的Linux系统上相同的行为glob(pattern)<pattern>,和更高版本的Perl.

我的期望是,globbing只是opendir/readdir,并且它不需要检查它正在搜索的实际路径名.

这是什么目的lstat?它会影响glob()的返回吗?

linux perl glob

7
推荐指数
1
解决办法
409
查看次数

在Perl中,如何确定子例程是否作为方法调用?

有没有办法确定子程序是作为方法(使用@ISA探测)还是作为普通子程序调用的?也许有某种扩展模块超级调用者()

例如,给定

package Ad::Hoc;

sub func() { ... }
Run Code Online (Sandbox Code Playgroud)

如何func()区分以下两个调用:

Ad::Hoc->func;            # or $obj->func

Ad::Hoc::func('Ad::Hoc'); # or func($obj)
Run Code Online (Sandbox Code Playgroud)

(我知道,这样做的愿望是可怜的设计™的指示.)

methods perl

7
推荐指数
1
解决办法
249
查看次数

僵尸进程即使线程仍在运行

为什么Linux认为主线程终止为僵尸进程的进程有什么办法可以避免这种情况?

在下面的代码中我:

  1. 使用一个主线程创建进程
  2. 创建一个新的分离线程
  3. pthread_exit 主线程
  4. pthread_exit 分离的线程

在#3之前,将ps(1)我的流程显示为正常流程.但是,在#3之后ps(1),即使它仍然有运行的线程,它也会将我的进程显示为僵尸(例如2491 pts/0 00:00:00 thread-app <defunct>).

是否可以退出主线程但避免进入僵尸状态?

码:

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>

void *thread_function(void *args)
{
printf("The is new thread! Sleep 20 seconds...\n");
sleep(20);
printf("Exit from thread\n");
pthread_exit(0);
}

int main(int argc, char **argv)
{
pthread_t thrd;
pthread_attr_t attr;
int res = 0;
res = pthread_attr_init(&attr);
res = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
res = pthread_create(&thrd, &attr, thread_function, NULL);
res = pthread_attr_destroy(&attr);
printf("Main …
Run Code Online (Sandbox Code Playgroud)

c linux multithreading posix pthreads

7
推荐指数
1
解决办法
943
查看次数

POSIX 标准中的条件

这些天我花了很多时间阅读有关脚本编写的各种文章和指南(大部分是 Bash 的)。首先出现的事情之一是最好的办法是坚持使用 POSIX,以实现可移植性。

不管怎样,我无法得到直接做出条件陈述的标准方法......我想test在这篇文章中忽略[并讨论[[

我发现这[有点过时,但每个 shell 都支持它(旧的作为 的别名/bin/test/,“新”作为 shell 本身的一部分)。

另一方面,我发现几乎每个教程都使用[[, 并且当被问到时,原因是“Bash 在大多数 Linux 发行版中是默认的,所以它就像一个标准”。

当然,它们之间有很多差异,我个人觉得[[更容易使用。

做出条件语句的标准方法是什么?如果没有定义标准方法:最好的方法是什么?我必须实现可移植性,而不是可读性或易用性......

对于“Bash 是事实上的标准”的立场是什么?将其用作标准而不仅仅是 POSIX 规则真的安全吗?

shell posix if-statement

7
推荐指数
1
解决办法
6842
查看次数

什么是 @.在Perl?

@.perl中的变量是什么?

它看起来是一个特殊的,可写的全局,并且(令人惊讶地)不会在双引号字符串中进行插值:

use strict;
use warnings;

                 # Under 5.8, 5.10, 5.12, 5.14, and 5.16,
                 # the following lines produce:

@. = (3, 2, 1);  # no error
print "@.\n";    # "@."
print @., "\n";  # "321"

eval 'my @.; 1'  # Can't use global @. in "my" at (eval 1)
  or die $@;     #  line 1, near "my @."
Run Code Online (Sandbox Code Playgroud)

我不记得以前遇到它,并没有看到它perlvar也不是perldata.

variables perl

6
推荐指数
1
解决办法
990
查看次数