>Description:
Given a table that has a timestamp field which is either the primary key or
one field in a multi-column primary key, the value in this field is
updated to the current time any time an SQL UPDATE is done, even
when the timestamp field is not intended to be updated.
>How-To-Repeat:
mysql> CREATE TABLE foo(field1 TIMESTAMP PRIMARY KEY, field2 INT);
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO foo VALUES(now(), 10);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM foo;
+----------------+--------+
| field1 | field2 |
+----------------+--------+
| 20020522105353 | 10 |
+----------------+--------+
1 row in set (0.00 sec)
mysql> UPDATE foo SET field2=11;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM foo;
+----------------+--------+
| field1 | field2 |
+----------------+--------+
| 20020522105405 | 11 |
+----------------+--------+
1 row in set (0.00 sec)
-- NOTICE that the time in field1 changed after the update. This is wrong.
>Fix:
A workaround is to set the timestamp field to itself on an update.
ex: "UPDATE foo SET field1=field1, field2=11"
>Submitter-Id:
>Originator: Jeff Messner
>Organization:
>MySQL support: none
>Synopsis: timestamp primary key's value improperly changing on sql update
>Severity: serious
>Priority: medium
>Category: mysql
>Class: sw-bug
>Release: mysql-3.23.49a (Official MySQL Binary)
>Server: /usr/local/mysql/bin/mysqladmin Ver 8.23 Distrib 3.23.49a, for pc-linux-gnu
>on i686
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Server version 3.23.49a
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 29 days 45 min 32 sec
Threads: 1 Questions: 2658 Slow queries: 0 Opens: 28 Flush tables: 1 Open tables:
18 Queries per second avg: 0.001
>Environment:
System: Linux pc-00183 2.4.7-10 #1 Thu Sep 6 17:21:28 EDT 2001 i586 unknown
Architecture: i586
Some paths: /usr/bin/perl /usr/bin/make /usr/bin/gmake /usr/bin/gcc /usr/bin/cc
GCC: Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)
Compilation info: CC='gcc' CFLAGS='-Wimplicit -Wreturn-type -Wid-clash-51 -Wswitch
-Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-function-dec
-Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -mcpu=pentiumpro
-O3 -fno-omit-frame-pointer' CXX='gcc' CXXFLAGS='-Wimplicit -Wreturn-type
-Wid-clash-51 -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat
-Wimplicit-function-dec -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings
-Woverloaded-virtual -Wextern-inline -Wsign-promo -Wreorder -Wctor-dtor-privacy
-Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -mcpu=pentiumpro -O3
-fno-omit-frame-pointer' LDFLAGS=''
LIBC:
lrwxrwxrwx 1 root root 13 Mar 11 12:11 /lib/libc.so.6 -> libc-2.2.4.so
-rwxr-xr-x 1 root root 5716491 Sep 4 2001 /lib/libc-2.2.4.so
-rw-r--r-- 1 root root 27304836 Sep 4 2001 /usr/lib/libc.a
-rw-r--r-- 1 root root 178 Sep 4 2001 /usr/lib/libc.so
Configure command: ./configure --prefix=/usr/local/mysql --enable-assembler
--with-extra-charsets=complex --enable-thread-safe-client
--with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static
--with-other-libc=/usr/local/mysql-glibc '--with-comment=Official MySQL Binary'
--prefix=/usr/local/mysql --with-extra-charset=complex --enable-thread-safe-client
--enable-local-infile 'CFLAGS=-Wimplicit -Wreturn-type -Wid-clash-51 -Wswitch
-Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-function-dec
-Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -mcpu=pentiumpro
-O3 -fno-omit-frame-pointer' 'CXXFLAGS=-Wimplicit -Wreturn-type -Wid-clash-51 -Wswitch
-Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-function-dec
-Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual
-Wextern-inline -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor
-felide-constructors -fno-exceptions -fno-rtti -mcpu=pentiumpr!
o -O3 -fno-omit-frame-pointer' CXX=gcc
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php