我有一个SQLite数据库,版本3,并且我正在使用C#创建一个使用该数据库的应用程序。
我希望在表中使用时间戳字段来实现并发,但我注意到当我插入新记录时,该字段未设置,并且为null。
例如,在MS SQL Server中,如果我使用由数据库更新的时间戳字段,我不必自己设置。这在SQLite中是可能的吗?
发布于 2013-01-22 23:40:39
只需为字段声明一个默认值:
CREATE TABLE MyTable(
ID INTEGER PRIMARY KEY,
Name TEXT,
Other STUFF,
Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
但是,如果您的INSERT
命令将此字段显式设置为NULL
,则它将被设置为NULL
。
发布于 2013-12-17 14:24:46
您可以在SQLite上的表中创建时间戳字段,如下所示:
CREATE TABLE my_table (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
name VARCHAR(64),
sqltime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
INSERT INTO my_table(name, sqltime) VALUES('test1', '2010-05-28T15:36:56.200');
INSERT INTO my_table(name, sqltime) VALUES('test2', '2010-08-28T13:40:02.200');
INSERT INTO my_table(name) VALUES('test3');
这就是结果:
SELECT * FROM my_table;
发布于 2017-09-26 14:17:33
读取datefunc自动日期时间补全的工作示例如下:
sqlite> CREATE TABLE 'test' (
...> 'id' INTEGER PRIMARY KEY,
...> 'dt1' DATETIME NOT NULL DEFAULT (datetime(CURRENT_TIMESTAMP, 'localtime')),
...> 'dt2' DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime')),
...> 'dt3' DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%f', 'now', 'localtime'))
...> );
让我们以一种启动自动日期时间完成的方式插入一些行:
sqlite> INSERT INTO 'test' ('id') VALUES (null);
sqlite> INSERT INTO 'test' ('id') VALUES (null);
存储的数据清楚地表明前两个函数是相同的,但不是第三个函数:
sqlite> SELECT * FROM 'test';
1|2017-09-26 09:10:08|2017-09-26 09:10:08|2017-09-26 09:10:08.053
2|2017-09-26 09:10:56|2017-09-26 09:10:56|2017-09-26 09:10:56.894
请注意,SQLite函数被括在括号中!在一个例子中展示它有多难?
玩得开心!
https://stackoverflow.com/questions/14461851
复制相似问题