最近在记录一些简单的结构化日志信息时,用到了SQLite3数据库。相比于Mysql、SQL Server、Postgres等数据库,SQLite3更适合保存简单信息。
以前开发系统时,我更多地使用Mysql和Postgres,对SQLite3接触不多。这次使用SQLite3,希望它也能提供一些基本的功能,比如主键ID自增、插入数据时自动更新创建时间和更新时间。
接下来,我将记录下调查这几个功能的过程。
首先,我创建了一个SQLite3数据库文件test.db。SQLite3数据库实际上就是一个文件,如果文件不存在,SQLite3会自动创建。
然后,我创建了一个名为position_info的表,用于记录账户净值和利润。表中的字段不需要关注,只需关注id、created_at和updated_at这三个字段。
创建表之后,通过SQLite3的命令查看position_info表是否创建。
表按照默认的方式创建之后,发现插入一条数据很麻烦,需要指定position_info表中所有5个字段才能插入成功。
实际上,我希望实现的是插入和更新时,只关注equity和profit_loss两个字段,其他3个字段由数据库自动管理。类似于INSERT INTO position_info(equity, profit_loss) VALUES(10, 2)。
下面开始改造。
首先,让主键ID能够自动增长。
先删除创建的position_info,然后重新创建position_info表,创建时指定id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT。
创建完成后,插入两条数据,插入时不指定ID字段,发现数据库会帮我们自动插入ID。
接下来,设置创建时间(created_at)和更新时间(updated_at)自动插入:DEFAULT (DATETIME(‘now’, ‘localtime’))。
然后插入两条测试数据。
经过上面的改造之后,插入数据没有问题了,但是更新数据时还有一个瑕疵。更新数据时,updated_at字段没有变化,一直是插入数据时的那个时间。
为了让updated_at也能自动更新,需要加一个监听器,当数据有更新时,更新此数据的updated_at字段。
再更新一次数据看看。
最后,创建一个带有自增ID,自动插入创建时间和更新时间的完整SQL如下:
未经允许不得转载:大白鲨游戏网 » 使用SQLite3数据库实现自增ID和自动时间更新