insert_update.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. --disable_warnings
  2. DROP TABLE IF EXISTS t1;
  3. --enable_warnings
  4. CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B));
  5. INSERT t1 VALUES (1,2,10), (3,4,20);
  6. INSERT t1 VALUES (5,6,30) ON DUPLICATE KEY UPDATE c=c+100;
  7. SELECT * FROM t1;
  8. INSERT t1 VALUES (5,7,40) ON DUPLICATE KEY UPDATE c=c+100;
  9. SELECT * FROM t1;
  10. INSERT t1 VALUES (8,4,50) ON DUPLICATE KEY UPDATE c=c+1000;
  11. SELECT * FROM t1;
  12. INSERT t1 VALUES (1,4,60) ON DUPLICATE KEY UPDATE c=c+10000;
  13. SELECT * FROM t1;
  14. -- error 1062
  15. INSERT t1 VALUES (1,9,70) ON DUPLICATE KEY UPDATE c=c+100000, b=4;
  16. SELECT * FROM t1;
  17. TRUNCATE TABLE t1;
  18. INSERT t1 VALUES (1,2,10), (3,4,20);
  19. INSERT t1 VALUES (5,6,30), (7,4,40), (8,9,60) ON DUPLICATE KEY UPDATE c=c+100;
  20. SELECT * FROM t1;
  21. INSERT t1 SET a=5 ON DUPLICATE KEY UPDATE b=0;
  22. SELECT * FROM t1;
  23. INSERT t1 VALUES (2,1,11), (7,4,40) ON DUPLICATE KEY UPDATE c=c+VALUES(a);
  24. SELECT *, VALUES(a) FROM t1;
  25. explain extended SELECT *, VALUES(a) FROM t1;
  26. explain extended select * from t1 where values(a);
  27. DROP TABLE t1;
  28. #
  29. # test for Bug #2709 "Affected Rows for ON DUPL.KEY undocumented, 
  30. #                                                 perhaps illogical"
  31. #
  32. create table t1(a int primary key, b int);
  33. insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5);
  34. select * from t1;
  35. --enable_info
  36. insert into t1 values(4,14),(5,15),(6,16),(7,17),(8,18)
  37.  on duplicate key update b=b+10;
  38. --disable_info
  39. select * from t1;
  40. enable_info;
  41. replace into t1 values(5,25),(6,26),(7,27),(8,28),(9,29);
  42. disable_info;
  43. select * from t1;
  44. drop table t1;
  45. # WorkLog #2274 - enable INSERT .. SELECT .. UPDATE syntax
  46. # Same tests as beginning of this test except that insert source
  47. # is a result from a select statement
  48. #
  49. CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B));
  50. INSERT t1 VALUES (1,2,10), (3,4,20);
  51. INSERT t1 SELECT 5,6,30 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100;
  52. SELECT * FROM t1;
  53. INSERT t1 SELECT 5,7,40 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100;
  54. SELECT * FROM t1;
  55. INSERT t1 SELECT 8,4,50 FROM DUAL ON DUPLICATE KEY UPDATE c=c+1000;
  56. SELECT * FROM t1;
  57. INSERT t1 SELECT 1,4,60 FROM DUAL ON DUPLICATE KEY UPDATE c=c+10000;
  58. SELECT * FROM t1;
  59. -- error 1062
  60. INSERT t1 SELECT 1,9,70 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100000, b=4;
  61. SELECT * FROM t1;
  62. TRUNCATE TABLE t1;
  63. INSERT t1 VALUES (1,2,10), (3,4,20);
  64. CREATE TABLE t2 (a INT, b INT, c INT, d INT);
  65. # column names deliberately clash with columns in t1 (Bug#8147)
  66. INSERT t2 VALUES (5,6,30,1), (7,4,40,1), (8,9,60,1);
  67. INSERT t2 VALUES (2,1,11,2), (7,4,40,2);
  68. INSERT t1 SELECT a,b,c FROM t2 WHERE d=1 ON DUPLICATE KEY UPDATE c=t1.c+100;
  69. SELECT * FROM t1;
  70. INSERT t1 SET a=5 ON DUPLICATE KEY UPDATE b=0;
  71. SELECT * FROM t1;
  72. --error 1052
  73. INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=c+VALUES(a);
  74. INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=t1.c+VALUES(t1.a);
  75. SELECT *, VALUES(a) FROM t1;
  76. DROP TABLE t1;
  77. DROP TABLE t2;
  78. #
  79. # Bug#9725 - "disapearing query/hang" and "unknown error" with "on duplicate key update"
  80. # INSERT INGORE...UPDATE gives bad error or breaks protocol.
  81. #
  82. create table t1 (a int not null unique) engine=myisam;
  83. insert into t1 values (1),(2);
  84. insert ignore into t1 select 1 on duplicate key update a=2;
  85. select * from t1;
  86. insert ignore into t1 select a from t1 as t2 on duplicate key update a=t1.a+1 ;
  87. select * from t1;
  88. insert into t1 select 1 on duplicate key update a=2;
  89. select * from t1;
  90. --error 1052
  91. insert into t1 select a from t1 on duplicate key update a=a+1 ;
  92. --error 1052
  93. insert ignore into t1 select a from t1 on duplicate key update a=t1.a+1 ;
  94. drop table t1;
  95. #
  96. # Bug#10109 - INSERT .. SELECT ... ON DUPLICATE KEY UPDATE fails
  97. # Bogus "Duplicate columns" error message
  98. #
  99. CREATE TABLE t1 (
  100.   a BIGINT(20) NOT NULL DEFAULT 0,
  101.   PRIMARY KEY  (a)
  102. ) ENGINE=MyISAM;
  103. INSERT INTO t1 ( a ) SELECT 0 ON DUPLICATE KEY UPDATE a = a + VALUES (a) ;
  104. DROP TABLE t1;
  105. # End of 4.1 tests