165

バージョン 3 の SQLite データベースがあり、C# を使用してこのデータベースを使用するアプリケーションを作成しています。

同時実行のためにテーブルでタイムスタンプ フィールドを使用したいのですが、新しいレコードを挿入すると、このフィールドが設定されておらず、null になっていることに気付きました。

たとえば、MS SQL Server でデータベースによって更新されるタイムスタンプ フィールドを使用する場合、自分で設定する必要はありません。これはSQLiteで可能ですか?

4

7 に答える 7

255

フィールドのデフォルト値を宣言するだけです:

CREATE TABLE MyTable(
    ID INTEGER PRIMARY KEY,
    Name TEXT,
    Other STUFF,
    Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);

ただし、INSERTコマンドでこのフィールドを明示的に に設定するNULLと、 に設定されNULLます。

于 2013-01-22T15:40:39.457 に答える
6

上記の回答を補足するには...

EF を使用している場合は、Data Annotation [Timestamp] でプロパティを飾り、コンテキスト クラス内のオーバーライドされた OnModelCreating に移動し、次の Fluent API コードを追加します。

modelBuilder.Entity<YourEntity>()
                .Property(b => b.Timestamp)
                .ValueGeneratedOnAddOrUpdate()
                .IsConcurrencyToken()
                .ForSqliteHasDefaultValueSql("CURRENT_TIMESTAMP");

このテーブルに挿入されるすべてのデータにデフォルト値を作成します。

于 2017-06-05T18:44:03.273 に答える