diff --git a/integrations/session_insert_test.go b/integrations/session_insert_test.go index 38743365..a023ab72 100644 --- a/integrations/session_insert_test.go +++ b/integrations/session_insert_test.go @@ -1032,7 +1032,9 @@ func TestInsertDeleted(t *testing.T) { ID uint64 `xorm:"'ID' pk autoincr"` DeletedAt time.Time `xorm:"'DELETED_AT' deleted notnull"` } - assert.Error(t, testEngine.Sync2(new(InsertDeletedStructNotRight))) + // notnull tag will be ignored + err := testEngine.Sync2(new(InsertDeletedStructNotRight)) + assert.NoError(t, err) type InsertDeletedStruct struct { ID uint64 `xorm:"'ID' pk autoincr"` @@ -1042,7 +1044,7 @@ func TestInsertDeleted(t *testing.T) { assert.NoError(t, testEngine.Sync2(new(InsertDeletedStruct))) var v InsertDeletedStruct - _, err := testEngine.Insert(&v) + _, err = testEngine.Insert(&v) assert.NoError(t, err) var v2 InsertDeletedStruct diff --git a/tags/parser.go b/tags/parser.go index ffff74a2..b793a8f1 100644 --- a/tags/parser.go +++ b/tags/parser.go @@ -298,8 +298,8 @@ func (parser *Parser) Parse(v reflect.Value) (*schemas.Table, error) { deletedColumn := table.DeletedColumn() // check columns - if deletedColumn != nil && !deletedColumn.Nullable { - return nil, errors.New("deleted column should be allowed null") + if deletedColumn != nil { + deletedColumn.Nullable = true } return table, nil diff --git a/tags/tag.go b/tags/tag.go index 4a39ba54..641b8c52 100644 --- a/tags/tag.go +++ b/tags/tag.go @@ -238,6 +238,7 @@ func UpdatedTagHandler(ctx *Context) error { // DeletedTagHandler describes deleted tag handler func DeletedTagHandler(ctx *Context) error { ctx.col.IsDeleted = true + ctx.col.Nullable = true return nil }