postgresql - 将条目插入到跳过唯一性检查的表中
问题描述
我有这个表,它有一些唯一性约束,当我执行特定的插入语句时,我想确保禁用和未启用唯一性约束。可以禁用为表定义的唯一约束,然后再次启用它 - 或者也许仅对特定查询更好?
我正在使用 postgres 版本 12
我的表最初是在没有任何唯一性约束的情况下创建的,但如果需要,则会更改为具有唯一性约束。
-- Create table with EntityId
CREATE TABLE IF NOT EXISTS public.{table_name}
({table_name}_id BIGSERIAL PRIMARY KEY);
-- Create table_registration
CREATE TABLE IF NOT EXISTS public.{table_name}_registration
(
entry_id bigint REFERENCES |entityName|({table_name}_id),
row_id BIGSERIAL PRIMARY KEY,
valid tsrange,
entry_name text,
registration tsrange,
registration_by varchar(255),
|NewAttribute| |datatype|
);
后来是这样添加的约束
ALTER TABLE {table_name}_registration
DROP Constraint IF EXISTS {table_name}_{string.Join('_', listOfAttributes)}_key,
ADD Constraint {table_name}_{string.Join('_', listOfAttributes)}_key UNIQUE({string.Join(',', listOfAttributes)});
在执行此操作之前,所有唯一性都使用此删除
-- Drop all uniqueness constraints
DO $$
DECLARE r RECORD;
BEGIN
FOR r in SELECT
conrelid::regclass,
conname
FROM
pg_constraint
WHERE
contype IN ('u')
AND connamespace = 'public'::regnamespace
LOOP
EXECUTE format('ALTER TABLE %I DROP CONSTRAINT %I', r.conrelid::text, r.conname::text);
END LOOP;
END;
$$
解决方案
推荐阅读
- c# - Xfa.DatasetsNode.OuterXml 为空
- python - Networkx:在图中查找到多个节点之一的最短路径
- r - 将 Shiny 的输出保存到文件
- javascript - 如何获取数组的所有数组对象
- php - mysql服务器响应太慢或没有响应
- php - PHP 启动:无法加载动态库(windows 64 位)
- swift - Swift 中的可变 Zip 函数
- apache-spark - 使用预览图像创建 dataproc 集群时无法启动 Cloud SQL Metastore
- php - PHP如何通过子类中的父函数自我声明?
- c# - ASP.NET WebAPI 序列化问题