diff --git a/kong/db/declarative/import.lua b/kong/db/declarative/import.lua index a9a222ee7a26..67e1d981af9b 100644 --- a/kong/db/declarative/import.lua +++ b/kong/db/declarative/import.lua @@ -327,6 +327,7 @@ local function _set_entity_for_txn(t, entity_name, item, options, is_delete) local is_foreign = fdata.type == "foreign" local fdata_reference = fdata.reference local value = item[fname] + local fws_id = fdata.unique_across_ws and kong.default_workspace or ws_id -- value may be null, we should skip it if not value or value == null then @@ -346,11 +347,7 @@ local function _set_entity_for_txn(t, entity_name, item, options, is_delete) value_str = pk_string(kong.db[fdata_reference].schema, value) end - if fdata.unique_across_ws then - ws_id = kong.default_workspace - end - - for _, wid in ipairs {ws_id, GLOBAL_WORKSPACE_TAG} do + for _, wid in ipairs {fws_id, GLOBAL_WORKSPACE_TAG} do local key = unique_field_key(entity_name, wid, fname, value_str or value) -- store item_key or nil into lmdb @@ -364,7 +361,7 @@ local function _set_entity_for_txn(t, entity_name, item, options, is_delete) value_str = pk_string(kong.db[fdata_reference].schema, value) - for _, wid in ipairs {ws_id, GLOBAL_WORKSPACE_TAG} do + for _, wid in ipairs {fws_id, GLOBAL_WORKSPACE_TAG} do local key = foreign_field_key(entity_name, wid, fname, value_str, pk) -- store item_key or nil into lmdb