Я стараюсь избегать, удаляет или обновления, которые я явно не запрашивал в SQL-сервере.
Или посредством расположения каскадом или с помощью триггеров. Они имеют тенденцию кусать Вас в заднице некоторое время по линии, или при попытке разыскать ошибку или при диагностировании проблем производительности.
то, Где я использовал бы их, находится в гарантии непротиворечивости для не очень много усилия. Для получения того же эффекта, необходимо было бы использовать хранимые процедуры.
Список символов Юникода для каждого класса генерируется из спецификации Юникода при компиляции Perl и обычно сохраняется в / usr / lib / perl-YOURPERLVERSION / unicore / lib / gc_sc /
Например, список диапазонов символов Юникода, соответствующих IsDigit (он же \ d), хранится в файле /usr/lib/perl-YOURPERLVERSION/unicore/lib/gc_sc/Digit.pl
Еще лучше, чем unicore / lib / gc_sc / Digit.pl
, это unicore / To / Digit.pl
. Это прямое отображение цифровых символов Unicode (ну, на самом деле их смещений) в их числовые значения. Это означает вместо:
use Unicode::Digits qw/digit_to_int/;
my @digits;
for (split "\n", require "unicore/lib/gc_sc/Digit.pl") {
my ($s, $e) = map hex, split;
for (my $ord = $s; $ord <= $e; $ord++) {
my $chr = chr $ord;
push @{$digits[digits_to_int $chr]}, $chr;
}
}
for my $i (0 .. 9) {
my $re = join '', "[", @{$digits[$i]}, "]";
$digits[$i] = qr/$re/;
}
Я могу сказать:
my @digits;
for (split "\n", require "unicore/To/Digit.pl") {
my ($ord, $val) = split;
my $chr = chr hex $ord;
push @{$digits[$val]}, $chr;
}
for my $i (0 .. 9) {
my $re = join '', "[", @{$digits[$i]}, "]";
$digits[$i] = qr/$re/;
}
Или даже лучше:
my @digits;
for (split "\n", require "unicore/To/Digit.pl") {
my ($ord, $val) = split;
$digits[$val] .= "\\x{$ord}";
}
@digits = map { qr/[$_]/ } @digits;
соответствие символов / \ d / полностью зависит от вашей реализации регулярного выражения (хотя стандартные 0-9 гарантированы). В случае Perl используемый языковой стандарт perl определяет, какие символы считаются буквенными и цифрами.
Это невозможно сделать, не перебирая все символы. (если вы создаете огромную строку со всеми из них и используете регулярное выражение, вам все равно придется выполнить цикл хотя бы один раз, чтобы создать строку).