亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? trigger2.test

?? sqlite庫
?? TEST
?? 第 1 頁 / 共 2 頁
字號(hào):
# The author disclaims copyright to this source code.  In place of# a legal notice, here is a blessing:##    May you do good and not evil.#    May you find forgiveness for yourself and forgive others.#    May you share freely, never taking more than you give.##***********************************************************************## Regression testing of FOR EACH ROW table triggers## 1. Trigger execution order tests. # These tests ensure that BEFORE and AFTER triggers are fired at the correct# times relative to each other and the triggering statement. ## trigger2-1.1.*: ON UPDATE trigger execution model.# trigger2-1.2.*: DELETE trigger execution model.# trigger2-1.3.*: INSERT trigger execution model.## 2. Trigger program execution tests.# These tests ensure that trigger programs execute correctly (ie. that a# trigger program can correctly execute INSERT, UPDATE, DELETE * SELECT# statements, and combinations thereof).## 3. Selective trigger execution # This tests that conditional triggers (ie. UPDATE OF triggers and triggers# with WHEN clauses) are fired only fired when they are supposed to be.## trigger2-3.1: UPDATE OF triggers# trigger2-3.2: WHEN clause## 4. Cascaded trigger execution # Tests that trigger-programs may cause other triggers to fire. Also that a # trigger-program is never executed recursively.# # trigger2-4.1: Trivial cascading trigger# trigger2-4.2: Trivial recursive trigger handling ## 5. Count changes behaviour.# Verify that rows altered by triggers are not included in the return value# of the "count changes" interface.## 6. ON CONFLICT clause handling# trigger2-6.1[a-f]: INSERT statements# trigger2-6.2[a-f]: UPDATE statements## 7. & 8. Triggers on views fire correctly.#set testdir [file dirname $argv0]source $testdir/tester.tclifcapable {!trigger} {  finish_test  return}# 1.ifcapable subquery {  set ii 0  set tbl_definitions [list \  	{CREATE TABLE tbl (a, b);}                                      \  	{CREATE TABLE tbl (a INTEGER PRIMARY KEY, b);}                  \        {CREATE TABLE tbl (a, b PRIMARY KEY);}                          \  	{CREATE TABLE tbl (a, b); CREATE INDEX tbl_idx ON tbl(b);}      \  ]  ifcapable tempdb {    lappend tbl_definitions \        {CREATE TEMP TABLE tbl (a, b); CREATE INDEX tbl_idx ON tbl(b);}     lappend tbl_definitions {CREATE TEMP TABLE tbl (a, b);}    lappend tbl_definitions \        {CREATE TEMPORARY TABLE tbl (a INTEGER PRIMARY KEY, b);}  }  foreach tbl_defn $tbl_definitions {    incr ii    catchsql { DROP INDEX tbl_idx; }    catchsql {      DROP TABLE rlog;      DROP TABLE clog;      DROP TABLE tbl;      DROP TABLE other_tbl;    }      execsql $tbl_defn      execsql {      INSERT INTO tbl VALUES(1, 2);      INSERT INTO tbl VALUES(3, 4);        CREATE TABLE rlog (idx, old_a, old_b, db_sum_a, db_sum_b, new_a, new_b);      CREATE TABLE clog (idx, old_a, old_b, db_sum_a, db_sum_b, new_a, new_b);        CREATE TRIGGER before_update_row BEFORE UPDATE ON tbl FOR EACH ROW         BEGIN        INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog),   	  old.a, old.b,   	  (SELECT coalesce(sum(a),0) FROM tbl),          (SELECT coalesce(sum(b),0) FROM tbl),   	  new.a, new.b);      END;        CREATE TRIGGER after_update_row AFTER UPDATE ON tbl FOR EACH ROW         BEGIN        INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog),   	  old.a, old.b,   	  (SELECT coalesce(sum(a),0) FROM tbl),          (SELECT coalesce(sum(b),0) FROM tbl),   	  new.a, new.b);      END;        CREATE TRIGGER conditional_update_row AFTER UPDATE ON tbl FOR EACH ROW        WHEN old.a = 1        BEGIN        INSERT INTO clog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM clog),   	  old.a, old.b,   	  (SELECT coalesce(sum(a),0) FROM tbl),          (SELECT coalesce(sum(b),0) FROM tbl),   	  new.a, new.b);      END;    }      do_test trigger2-1.$ii.1 {      set r {}      foreach v [execsql {         UPDATE tbl SET a = a * 10, b = b * 10;        SELECT * FROM rlog ORDER BY idx;        SELECT * FROM clog ORDER BY idx;      }] {        lappend r [expr {int($v)}]      }      set r    } [list 1 1 2  4  6 10 20 \            2 1 2 13 24 10 20 \  	    3 3 4 13 24 30 40 \  	    4 3 4 40 60 30 40 \            1 1 2 13 24 10 20 ]      execsql {      DELETE FROM rlog;      DELETE FROM tbl;      INSERT INTO tbl VALUES (100, 100);      INSERT INTO tbl VALUES (300, 200);      CREATE TRIGGER delete_before_row BEFORE DELETE ON tbl FOR EACH ROW        BEGIN        INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog),   	  old.a, old.b,   	  (SELECT coalesce(sum(a),0) FROM tbl),          (SELECT coalesce(sum(b),0) FROM tbl),   	  0, 0);      END;        CREATE TRIGGER delete_after_row AFTER DELETE ON tbl FOR EACH ROW        BEGIN        INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog),   	  old.a, old.b,   	  (SELECT coalesce(sum(a),0) FROM tbl),          (SELECT coalesce(sum(b),0) FROM tbl),   	  0, 0);      END;    }    do_test trigger2-1.$ii.2 {      set r {}      foreach v [execsql {        DELETE FROM tbl;        SELECT * FROM rlog;      }] {        lappend r [expr {int($v)}]      }      set r    } [list 1 100 100 400 300 0 0 \            2 100 100 300 200 0 0 \            3 300 200 300 200 0 0 \            4 300 200 0 0 0 0 ]      execsql {      DELETE FROM rlog;      CREATE TRIGGER insert_before_row BEFORE INSERT ON tbl FOR EACH ROW        BEGIN        INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog),   	  0, 0,  	  (SELECT coalesce(sum(a),0) FROM tbl),          (SELECT coalesce(sum(b),0) FROM tbl),   	  new.a, new.b);      END;        CREATE TRIGGER insert_after_row AFTER INSERT ON tbl FOR EACH ROW        BEGIN        INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog),   	  0, 0,  	  (SELECT coalesce(sum(a),0) FROM tbl),          (SELECT coalesce(sum(b),0) FROM tbl),   	  new.a, new.b);      END;    }    do_test trigger2-1.$ii.3 {      execsql {          CREATE TABLE other_tbl(a, b);        INSERT INTO other_tbl VALUES(1, 2);        INSERT INTO other_tbl VALUES(3, 4);        -- INSERT INTO tbl SELECT * FROM other_tbl;        INSERT INTO tbl VALUES(5, 6);        DROP TABLE other_tbl;          SELECT * FROM rlog;      }    } [list 1 0 0 0 0 5 6 \            2 0 0 5 6 5 6 ]      integrity_check trigger2-1.$ii.4  }  catchsql {    DROP TABLE rlog;    DROP TABLE clog;    DROP TABLE tbl;    DROP TABLE other_tbl;  }}# 2.set ii 0foreach tr_program {  {UPDATE tbl SET b = old.b;}  {INSERT INTO log VALUES(new.c, 2, 3);}  {DELETE FROM log WHERE a = 1;}  {INSERT INTO tbl VALUES(500, new.b * 10, 700);     UPDATE tbl SET c = old.c;     DELETE FROM log;}  {INSERT INTO log select * from tbl;} } {  foreach test_varset [ list \    {      set statement {UPDATE tbl SET c = 10 WHERE a = 1;}       set prep      {INSERT INTO tbl VALUES(1, 2, 3);}      set newC 10      set newB 2      set newA 1      set oldA 1      set oldB 2      set oldC 3    } \    {      set statement {DELETE FROM tbl WHERE a = 1;}      set prep      {INSERT INTO tbl VALUES(1, 2, 3);}      set oldA 1      set oldB 2      set oldC 3    } \    {      set statement {INSERT INTO tbl VALUES(1, 2, 3);}      set newA 1      set newB 2      set newC 3    }  ] \  {    set statement {}    set prep {}    set newA {''}    set newB {''}    set newC {''}    set oldA {''}    set oldB {''}    set oldC {''}    incr ii    eval $test_varset    set statement_type [string range $statement 0 5]    set tr_program_fixed $tr_program    if {$statement_type == "DELETE"} {      regsub -all new\.a $tr_program_fixed {''} tr_program_fixed       regsub -all new\.b $tr_program_fixed {''} tr_program_fixed       regsub -all new\.c $tr_program_fixed {''} tr_program_fixed     }    if {$statement_type == "INSERT"} {      regsub -all old\.a $tr_program_fixed {''} tr_program_fixed       regsub -all old\.b $tr_program_fixed {''} tr_program_fixed       regsub -all old\.c $tr_program_fixed {''} tr_program_fixed     }    set tr_program_cooked $tr_program    regsub -all new\.a $tr_program_cooked $newA tr_program_cooked     regsub -all new\.b $tr_program_cooked $newB tr_program_cooked     regsub -all new\.c $tr_program_cooked $newC tr_program_cooked     regsub -all old\.a $tr_program_cooked $oldA tr_program_cooked     regsub -all old\.b $tr_program_cooked $oldB tr_program_cooked     regsub -all old\.c $tr_program_cooked $oldC tr_program_cooked     catchsql {      DROP TABLE tbl;      DROP TABLE log;    }    execsql {      CREATE TABLE tbl(a PRIMARY KEY, b, c);      CREATE TABLE log(a, b, c);    }    set query {SELECT * FROM tbl; SELECT * FROM log;}    set prep "$prep; INSERT INTO log VALUES(1, 2, 3);\             INSERT INTO log VALUES(10, 20, 30);"# Check execution of BEFORE programs:    set before_data [ execsql "$prep $tr_program_cooked $statement $query" ]    execsql "DELETE FROM tbl; DELETE FROM log; $prep";    execsql "CREATE TRIGGER the_trigger BEFORE [string range $statement 0 6]\             ON tbl BEGIN $tr_program_fixed END;"    do_test trigger2-2.$ii-before "execsql {$statement $query}" $before_data    execsql "DROP TRIGGER the_trigger;"    execsql "DELETE FROM tbl; DELETE FROM log;"# Check execution of AFTER programs    set after_data [ execsql "$prep $statement $tr_program_cooked $query" ]    execsql "DELETE FROM tbl; DELETE FROM log; $prep";    execsql "CREATE TRIGGER the_trigger AFTER [string range $statement 0 6]\             ON tbl BEGIN $tr_program_fixed END;"    do_test trigger2-2.$ii-after "execsql {$statement $query}" $after_data    execsql "DROP TRIGGER the_trigger;"    integrity_check trigger2-2.$ii-integrity  }}catchsql {  DROP TABLE tbl;  DROP TABLE log;}# 3.# trigger2-3.1: UPDATE OF triggersexecsql {  CREATE TABLE tbl (a, b, c, d);  CREATE TABLE log (a);  INSERT INTO log VALUES (0);  INSERT INTO tbl VALUES (0, 0, 0, 0);  INSERT INTO tbl VALUES (1, 0, 0, 0);  CREATE TRIGGER tbl_after_update_cd BEFORE UPDATE OF c, d ON tbl    BEGIN      UPDATE log SET a = a + 1;    END;}do_test trigger2-3.1 {  execsql {    UPDATE tbl SET b = 1, c = 10; -- 2    UPDATE tbl SET b = 10; -- 0    UPDATE tbl SET d = 4 WHERE a = 0; --1    UPDATE tbl SET a = 4, b = 10; --0    SELECT * FROM log;  }} {3}execsql {  DROP TABLE tbl;  DROP TABLE log;}# trigger2-3.2: WHEN clauseset when_triggers [list {t1 BEFORE INSERT ON tbl WHEN new.a > 20}]ifcapable subquery {  lappend when_triggers \      {t2 BEFORE INSERT ON tbl WHEN (SELECT count(*) FROM tbl) = 0}}execsql {  CREATE TABLE tbl (a, b, c, d);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品一区视频| 欧美大片一区二区| 国产乱码字幕精品高清av | 成人午夜视频网站| 美女爽到高潮91| 夜夜亚洲天天久久| 久久久www免费人成精品| 欧美日韩精品欧美日韩精品一综合| 国产伦精一区二区三区| 丝瓜av网站精品一区二区| 国产精品久久久久影院色老大| 日韩一卡二卡三卡四卡| 在线免费不卡视频| 99久久久无码国产精品| 国产乱子伦视频一区二区三区 | www.日韩av| 久久99深爱久久99精品| 偷拍自拍另类欧美| 一区二区三区四区亚洲| 中文字幕日韩一区| 中文字幕精品在线不卡| 久久在线观看免费| 欧美成人国产一区二区| 8v天堂国产在线一区二区| 在线一区二区三区| 色香蕉成人二区免费| 99天天综合性| 不卡的电影网站| 99视频在线精品| 99久久精品费精品国产一区二区| 国产成人午夜精品影院观看视频| 久久精品国产**网站演员| 日韩精品成人一区二区三区 | 成人动漫一区二区| 国产精品99久久久| 高清不卡在线观看av| 国产最新精品免费| 国产精品66部| 成人性生交大片免费| av在线免费不卡| av在线不卡网| 日本福利一区二区| 欧美在线综合视频| 欧美视频一区在线观看| 欧美日韩一区在线| 欧美一二三四区在线| 欧美xxx久久| 国产片一区二区| 最新国产精品久久精品| 亚洲人成网站影音先锋播放| 亚洲精品va在线观看| 亚洲国产精品尤物yw在线观看| 一区二区三区在线高清| 亚洲va欧美va人人爽午夜| 五月婷婷久久综合| 另类综合日韩欧美亚洲| 国产乱对白刺激视频不卡| 国产成人在线视频网址| 91视频国产资源| 欧美浪妇xxxx高跟鞋交| 日韩一区二区在线观看| ww亚洲ww在线观看国产| 成人欧美一区二区三区小说| 一区二区三区欧美久久| 丝袜诱惑制服诱惑色一区在线观看| 日韩福利电影在线| 国产成人午夜片在线观看高清观看| 成人av动漫网站| 欧美女孩性生活视频| www亚洲一区| 综合激情网...| 免费成人在线观看| k8久久久一区二区三区| 欧美日韩在线播放一区| 久久久亚洲精品石原莉奈| 亚洲欧美激情在线| 麻豆精品在线播放| 91香蕉视频mp4| 日韩视频免费观看高清完整版| 中文字幕精品一区二区精品绿巨人| 曰韩精品一区二区| 久久99热这里只有精品| 日本久久一区二区| 精品99一区二区| 亚洲小说欧美激情另类| 国产精品一二三四五| 欧美日韩一级视频| 日本一二三不卡| 日本不卡一二三区黄网| 91免费看`日韩一区二区| 欧美一区二区在线观看| 国产精品久久久久9999吃药| 麻豆国产精品视频| 在线影视一区二区三区| 久久久午夜电影| 日本中文字幕一区| 色狠狠色狠狠综合| 国产日韩欧美不卡在线| 日韩成人精品在线观看| 一本久久a久久免费精品不卡| 日韩精品中文字幕一区二区三区 | 国产综合一区二区| 欧美日韩亚洲综合| 亚洲色图色小说| 国精品**一区二区三区在线蜜桃| 欧美日韩一区二区欧美激情| 中文字幕一区三区| 韩国av一区二区| 日韩亚洲欧美综合| 亚洲在线中文字幕| 91小视频在线免费看| 国产欧美日产一区| 国产一区999| 欧美电影免费观看高清完整版在线观看| 亚洲综合久久av| 91色在线porny| 国产精品免费久久| 国产成人三级在线观看| 日韩一区二区三区四区| 无吗不卡中文字幕| 精品视频999| 午夜不卡av免费| 欧美人与性动xxxx| 亚洲h动漫在线| 欧美三级中文字幕在线观看| 亚洲人成7777| 色综合久久久久久久久| 亚洲精品欧美在线| 91行情网站电视在线观看高清版| 国产精品网站一区| 成人av网站免费观看| 国产精品拍天天在线| 成人精品gif动图一区| 中文字幕第一区第二区| 不卡一区二区在线| 亚洲人精品午夜| 91小视频在线免费看| 一区二区视频免费在线观看| 91首页免费视频| 伊人开心综合网| 欧美精品亚洲二区| 日韩国产一二三区| 亚洲精品一区二区三区香蕉| 精品一区二区影视| 国产午夜精品在线观看| www.av精品| 亚洲成人av一区| 欧美一区二区日韩一区二区| 精品中文av资源站在线观看| 欧美精品一区二区精品网| 国产电影精品久久禁18| 亚洲丝袜另类动漫二区| 91豆麻精品91久久久久久| 亚洲va欧美va人人爽| 精品三级在线看| 成人av一区二区三区| 亚洲欧美日韩一区| 欧美一区二区视频在线观看2020 | 国产剧情av麻豆香蕉精品| 久久精品这里都是精品| 91一区二区在线| 视频在线在亚洲| 久久久久国产精品麻豆| 91看片淫黄大片一级| 蜜臀99久久精品久久久久久软件| 久久久久久久综合狠狠综合| 波多野结衣91| 午夜久久久久久| 国产亚洲精品资源在线26u| 91在线播放网址| 麻豆91精品91久久久的内涵| 日本一区二区在线不卡| 欧美午夜寂寞影院| 国产老妇另类xxxxx| 一区二区三区欧美日| 精品成人a区在线观看| 日本丰满少妇一区二区三区| 精品亚洲成a人| 一区二区三区精品视频在线| 精品不卡在线视频| 欧美日韩一区国产| 成人免费看片app下载| 无码av中文一区二区三区桃花岛| 久久久电影一区二区三区| 精品视频资源站| 成人一道本在线| 蜜桃精品在线观看| 亚洲女与黑人做爰| 久久久美女艺术照精彩视频福利播放| 日本精品免费观看高清观看| 国内精品伊人久久久久影院对白| 国产精品白丝jk白祙喷水网站| 亚洲手机成人高清视频| 久久综合网色—综合色88| 欧美在线短视频| 成人午夜精品在线| 男女激情视频一区| 亚洲国产精品久久久久秋霞影院| 欧美国产一区在线| 久久综合资源网|