--echo # Test updating a key that returns duplicate error
--error ER_DUP_ENTRY
UPDATE t1 SET id2=1, id3=1, id4=1 WHERE id1=2;
--error ER_DUP_ENTRY
UPDATE t1 SET id2=1, id3=1, id4=1;
SELECT COUNT(*) FROM t1;
--echo # Test updating a key to itself
UPDATE t1 set id2=id4;
UPDATE t1 set id5=id3, value1=value2;
UPDATE t1 set value3=value1;
--echo # Test modifying values should not cause duplicates
UPDATE t1 SET value1=value3+1;
UPDATE t1 SET value3=value3 div2;
UPDATE t1 SET value2=value3;
SELECT COUNT(*) FROM t1;
--echo # Test NULL values are considered unique
INSERT INTO t1 VALUES (20, 20, 20, NULL, NULL, 20, 20, 20);
INSERT INTO t1 VALUES (21, 20, 20, NULL, NULL, 20, 20, 20);
INSERT INTO t1 VALUES (22, 20, 20, NULL, NULL, 20, 20, 20);
SELECT COUNT(*) FROM t1;
--echo # Adding multiple rows where one of the rows fail the duplicate
--echo # check should fail the whole statement
--error ER_DUP_ENTRY
INSERT INTO t1 VALUES (23, 23, 23, 23, 23, 23, 23, 23),
(24, 24, 24, 24, 24, 24, 24, 24),
(25, 10, 10, 10, 25, 25, 25, 25),
(26, 26, 26, 26, 26, 26, 26, 26);
SELECT COUNT(*) FROM t1;
# Test open transactions can prevent duplicate keys
connection con1; BEGIN;
INSERT INTO t1 VALUES (30, 31, 32, 33, 34, 30, 30, 30);
connection con2; BEGIN;
SELECT COUNT(*) FROM t1;
--echo # Primary key should prevent duplicate on insert
--error ER_LOCK_WAIT_TIMEOUT
INSERT INTO t1 VALUES (30, 31, 30, 30, 30, 30, 30, 30);
--echo # Primary key should prevent duplicate on update
--error ER_LOCK_WAIT_TIMEOUT
UPDATE t1 SET id1=30, id2=31 WHERE id2=10;
--echo # Unique secondary key should prevent duplicate on insert
--error ER_LOCK_WAIT_TIMEOUT
INSERT INTO t1 VALUES (31, 31, 32, 33, 30, 30, 30, 30);
--error ER_LOCK_WAIT_TIMEOUT
INSERT INTO t1 VALUES (32, 32, 32, 32, 34, 32, 32, 32);
--echo # Unique secondary key should prevent duplicate on update
--error ER_LOCK_WAIT_TIMEOUT
UPDATE t1 SET id2=31, id3=32, id4=33 WHERE id2=8;
--error ER_LOCK_WAIT_TIMEOUT
UPDATE t1 SET id5=34 WHERE id2=8;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.