循环遍历PostgreSQL中的记录并生成guid?

时间:2018-04-14 21:19:58

标签: database postgresql security

我正在从网址屏蔽我的ID。我通过在URL中使用GUID而不是主键(有人可以轻易猜出)来解决这个问题。此GUID将自身映射到记录,就像主键一样。

  1. 这是一个不错的解决方案吗?有人必须猜测GUID以查看其他人的数据。我在这里缺少安全漏洞吗?

  2. 如何更新现有数据库以使用PostgreSQL循环记录以使用唯一GUID更新每条记录?

2 个答案:

答案 0 :(得分:2)

您也可以创建没有Postgres扩展名的GUID,例如: G:

ALTER TABLE my_table ADD COLUMN guid UUID 
    DEFAULT MD5(RANDOM()::TEXT || ':' || CURRENT_TIMESTAMP)::UUID NOT NULL;

如果您不需要使用默认值定义GUID,则可以使用行数据进行生成,例如主键:

BEGIN;
ALTER TABLE my_table ADD COLUMN guid UUID;
UPDATE my_table SET guid = MD5(id::TEXT || ':' || CURRENT_TIMESTAMP)::UUID;
ALTER TABLE my_table ALTER guid SET NOT NULL;
END;

答案 1 :(得分:0)

uuid-ossp扩展程序具有生成随机uuids的功能。

首先:

create extension "uuid-ossp";

然后:

alter table url add column guid uuid not null default uuid_generate_v4();