Skip to content
Snippets Groups Projects
  • Kirill Shcherbatov's avatar
    c4781f93
    sql: add an ability to disable CK constraints · c4781f93
    Kirill Shcherbatov authored
    Closes #4244
    
    @TarantoolBot document
    Title: an ability to disable CK constraints
    
    Now it is possible to disable and enable ck constraints.
    All ck constraints are enabled by default when Tarantool is
    configured. Ck constraints checks are not performed during
    standard recovery, but performed during force_recovery -
    all conflicting tuples are skipped in case of ck_constraint
    conflict.
    
    To change CK constraint "is_enabled" state, call
    -- in LUA
    ck_obj:enable(new_state in {true, false})
    -- in SQL
    ALTER TABLE {TABLE_NAME} {EN, DIS}ABLE CHECK CONSTRAINT {CK_NAME};
    
    Example:
    box.space.T6.ck_constraint.ck_unnamed_T6_1:enable(false)
    box.space.T6.ck_constraint.ck_unnamed_T6_1
    - space_id: 512
      is_enabled: false
      name: ck_unnamed_T6_1
      expr: a < 10
    box.space.T6:insert({11})
    -- passed
    box.execute("ALTER TABLE t6 ENABLE CHECK CONSTRAINT \"ck_unnamed_T6_1\"")
    box.space.T6:insert({12})
    - error: 'Check constraint failed ''ck_unnamed_T6_1'': a < 10'
    c4781f93
    History
    sql: add an ability to disable CK constraints
    Kirill Shcherbatov authored
    Closes #4244
    
    @TarantoolBot document
    Title: an ability to disable CK constraints
    
    Now it is possible to disable and enable ck constraints.
    All ck constraints are enabled by default when Tarantool is
    configured. Ck constraints checks are not performed during
    standard recovery, but performed during force_recovery -
    all conflicting tuples are skipped in case of ck_constraint
    conflict.
    
    To change CK constraint "is_enabled" state, call
    -- in LUA
    ck_obj:enable(new_state in {true, false})
    -- in SQL
    ALTER TABLE {TABLE_NAME} {EN, DIS}ABLE CHECK CONSTRAINT {CK_NAME};
    
    Example:
    box.space.T6.ck_constraint.ck_unnamed_T6_1:enable(false)
    box.space.T6.ck_constraint.ck_unnamed_T6_1
    - space_id: 512
      is_enabled: false
      name: ck_unnamed_T6_1
      expr: a < 10
    box.space.T6:insert({11})
    -- passed
    box.execute("ALTER TABLE t6 ENABLE CHECK CONSTRAINT \"ck_unnamed_T6_1\"")
    box.space.T6:insert({12})
    - error: 'Check constraint failed ''ck_unnamed_T6_1'': a < 10'
mkkeywordhash.c 21.76 KiB