Peter -- ...and then Peter Beckman said... % % Seems that either I don't understand mysql, or something.
Looks like it, though I admit that the manual doesn't adequately explain
your results. Check out section 6.2.2.4 for details.
%
% My table, with the non-important things removed...
...
%
% So my assumption is that if I insert with year="" it should use the
% default. Or at least 0000.
That makes sense. And so what is the default? Looks like it is, for
some reason, 2000. [This isn't a TIMESTAMP field, so we don't
necessarily expect it to be "this year".]
%
...
% mysql> update plate set year="" where pid=65;
...
% +-----+---------+------+-
% | 65 | DVF0343 | 2000 |
% +-----+---------+------+-
%
% 2000? What? Why? Confused. PHP or Mysql fault?
Looks like it's standard mysql behavior:
mysql> create table ytest (pid int unsigned not null auto_increment primary key, y
year(4));
Query OK, 0 rows affected (0.00 sec)
mysql> describe ytest;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| pid | int(10) unsigned | | PRI | NULL | auto_increment |
| y | year(4) | YES | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> insert into ytest values ('',1),('',''),('','2000');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 4
mysql> select * from ytest;
+-----+------+
| pid | y |
+-----+------+
| 1 | 2001 |
| 2 | 2000 |
| 3 | 2000 |
+-----+------+
3 rows in set (0.00 sec)
mysql> update ytest set y = "" where pid = 3;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 1
mysql> select * from ytest;
+-----+------+
| pid | y |
+-----+------+
| 1 | 2001 |
| 2 | 2000 |
| 3 | 2000 |
+-----+------+
3 rows in set (0.00 sec)
mysql> update ytest set y = '0' where pid =3 ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> update ytest set y = '45678' where pid = 2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> select * from ytest;
+-----+------+
| pid | y |
+-----+------+
| 1 | 2001 |
| 2 | 0000 |
| 3 | 2000 |
+-----+------+
3 rows in set (0.00 sec)
Note that I sometimes get warnings and sometimes don't. I haven't dug
into them, though.
%
% Beckman
% ---------------------------------------------------------------------------
% Peter Beckman Internet Guy
% [EMAIL PROTECTED] http://www.purplecow.com/
% ---------------------------------------------------------------------------
HTH & HAND
:-D
--
David T-G * There is too much animal courage in
(play) [EMAIL PROTECTED] * society and not sufficient moral courage.
(work) [EMAIL PROTECTED] -- Mary Baker Eddy, "Science and Health"
http://justpickone.org/davidtg/ Shpx gur Pbzzhavpngvbaf Qrprapl Npg!
pgp00000.pgp
Description: PGP signature
