That is a good point. The timestamp defaults to the current time if a
value is not given for the column during an UPDATE, but if a value is given
for the column, that is used instead. (A MySQL console session showing
this is below.)
I can work on a PR to include an :extra key in the schema output.
Thanks,
Ben
MariaDB [rightway]> CREATE TABLE test (id integer NOT NULL AUTO_INCREMENT,
name varchar(255), updated_at datetime ON UPDATE CURRENT_TIMESTAMP, PRIMARY
KEY (id));
Query OK, 0 rows affected (0.027 sec)
MariaDB [rightway]> INSERT INTO test (name) VALUES ("ben");
Query OK, 1 row affected (0.017 sec)
MariaDB [rightway]> SELECT * FROM test;
++--++
| id | name | updated_at |
++--++
| 1 | ben | NULL |
++--++
1 row in set (0.000 sec)
MariaDB [rightway]> UPDATE test SET name = "BEN" WHERE id = 1;
Query OK, 1 row affected (0.003 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [rightway]> SELECT * FROM test;
++--+-+
| id | name | updated_at |
++--+-+
| 1 | BEN | 2021-11-13 14:44:04 |
++--+-+
1 row in set (0.000 sec)
MariaDB [rightway]> UPDATE test SET name = "Ben", updated_at = "2020-10-11
12:00:00" WHERE id = 1;
Query OK, 1 row affected (0.014 sec)
Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [rightway]> SELECT * FROM test;
++--+-+
| id | name | updated_at |
++--+-+
| 1 | Ben | 2020-10-11 12:00:00 |
++--+-+
1 row in set (0.000 sec)
On Saturday, November 13, 2021 at 9:36:51 AM UTC-6 Jeremy Evans wrote:
> On Sat, Nov 13, 2021 at 6:53 AM Ben Schmeckpeper
> wrote:
>
>> Good morning.
>>
>> When querying a MySQL table's schema, I would like to know if a column
>> has ON UPDATE CURRENT_TIMESTAMP set.
>>
>> I found an earlier question where it was explained that MySQL's usage of
>> that syntax is non-standard and not supported for table creation, which I
>> understand. Would it be reasonable, though, to add this syntax to the
>> strings looked for in Extras when determining if a column is generated?
>> https://github.com/jeremyevans/sequel/blob/1afc503f591127755e5316cf2fbd12d9de12a85d/lib/sequel/adapters/shared/mysql.rb#L530
>>
>> If not, and the desire is for the value of that generated field to only
>> match columns that can be created using the generated_always_as option, is
>> there another way to access the Extra data provided by MySQL, or would I
>> need to run the DESCRIBE query and parse the output myself?
>>
>
> I'll have to try out this feature and see how it works. If it always
> updates to the desired value, regardless of the value you put in, then
> having it as a generated column is fine. If it only updates by default,
> but will not override a value explicitly given during the update, then it
> isn't generated in the same way the other columns marked as generated are,
> and I don't think it would be a good idea to mix the two concepts.
>
> It is possible to expand the schema entries on MySQL to include an :extra
> key. It's also possible to expand table creation on MySQL to support ON
> UPDATE CURRENT TIMESTAMP.
>
> Thanks,
> Jeremy
>
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to sequel-talk+unsubscr...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sequel-talk/52d51c7a-902d-4ded-9daf-f7b2bb170aabn%40googlegroups.com.