vertica主键列能插入重复值的处理办法

问题描述

开发同事反馈在vertica中创建含主键列的表中插入重复数据时没有进行校验,插入重复值成功。经过测试着实可以插入重复值,这个坑有些不一样。
创建表和插入语句如下:

--创建表
CREATE TABLE dhhtest(
    ID VARCHAR(64) PRIMARY KEY 
);
--插入语句  不报错
insert into dhhtest values('1');
insert into dhhtest values('1');

--查询  发现2条语句
select * from dhhtest;
分析过程

百度没有相关的博客,最后只好硬着头皮去

查表约束是否启用

is_enabled显示f 未启用

SELECT constraint_name, column_name, constraint_type, is_enabled FROM PRIMARY_KEYS WHERE table_
name IN ('dhhtest');
constraint_name | column_name | constraint_type | is_enabled
-----------------+-------------+-----------------+------------
C_PRIMARY | id | p | f
查看数据库参数

表可以指定 Vertica 是否自动强制执行主键、唯一键或使用关键字 ENABLED 或 DISABLED 检查约束。如果省略 ENABLED 或DISABLED,则 Vertica 通过检查相应的配置参数:
image.png

查看创建表和约束语法
--创建表中Table-Constraint语法

[ CONSTRAINT constraint-name ]
{
... PRIMARY KEY (column[,... ]) [ ENABLED | DISABLED ]
... | FOREIGN KEY (column[,... ] ) REFERENCES table [ (column[,...]) ]
... | UNIQUE (column[,...]) [ ENABLED | DISABLED ]
... | CHECK (expression) [ ENABLED | DISABLED ]
}

--创建约束语法
ALTER TABLE table_name ADD CONSTRAINT constraint-name PRIMARY KEY (column) ENABLED;
解决办法
解决办法1_更改数据库参数
#查主键约束默认不启用 默认值0 (false/disabled)
SELECT GET_CONFIG_PARAMETER('EnableNewPrimaryKeysByDefault');
#查唯一键约束默认不启用 默认值0 (false/disabled)
SELECT GET_CONFIG_PARAMETER('EnableNewUniqueKeysByDefault');

#主键约束默认不启用改为默认启用
SELECT SET_CONFIG_PARAMETER('EnableNewPrimaryKeysByDefault', 1);  
#唯一键约束默认不启用改为默认启用
SELECT SET_CONFIG_PARAMETER('EnableNewUniqueKeysByDefault', 1);
解决办法2_更改SQL
方案1
CREATE TABLE dhhtest(
    ID VARCHAR(64) PRIMARY KEY 
);
ALTER TABLE public.dhhtest ADD CONSTRAINT pk_dhhtest PRIMARY KEY (ID) ENABLED;


方案2
CREATE TABLE dhhtest(
    ID VARCHAR(64) PRIMARY KEY ENABLED
);

查看约束是否启用,t启用
SELECT constraint_name, column_name, constraint_type, is_enabled FROM PRIMARY_KEYS WHERE table_
name IN ('dhhtest');
constraint_name | column_name | constraint_type | is_enabled
-----------------+-------------+-----------------+------------
C_PRIMARY | id | p | t
补充下主键概念
  • 概念

主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。

  • 作用:

1)保证实体的完整性;
2)加快数据库的操作速度
3)在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

  • 特点:

1)一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。
2)主键的值不可重复,也不可为空(NULL)。
3)主键值不能被重用
提示:虽然并不总是需要主键,但是多数数据库设计者都会保证他们创建的每个表具有一个主键,以便以后的数据库的操作和管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/231100.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

快速认识什么是:Docker

Docker,一种可以将软件打包到容器中并在任何环境中可靠运行的工具。但什么是容器以及为什么需要容器呢?今天就来一起学快速入门一下Docker吧!希望本文对您有所帮助。 假设您使用 Cobol 构建了一个在某种奇怪风格的 Linux 上运行的应用程序。您…

linux 定时任务

使用 crontab Usage: crontab [-u user] [-e|-l|-r] Crontab 的格式说明如下: * 逗号(‘,’) 指定列表值。如: “1,3,4,7,8″ * 中横线(‘-’) 指定范围值 如 “1-6″, 代表 “1,2,3,4,5,6″ * 星号 (‘*’) 代表所有可能的值 */15 表示每 15 分钟执行一次 # Use the ha…

Python中type、object和class的关系,一图即懂

没有文字描述,因为图足够好! 查看一个类的基类可以使用__bases__方法查看一个实例对应的类是谁,可以用__class__方法 class Animal:pass class User:pass class Dog(Animal, User):passif __name__ "__main__":print(Dog.__bases…

linux初级学习

(420条消息) 红帽认证-RHCSA_rhcsa红帽认证_yyyzf的博客-CSDN博客 OS:用户和机器的接口,UI:CMD,GUI shell: 通用格式 命令 选项(调控功能) 参数(操作对象)参数 省略参数对象一般使用当前目录作为参数对…

Linux下C++静态链接库的生成以及使用

目录 一.前言二.生成静态链接库三.使用静态链接库 一.前言 这篇文章简单讨论一下Linux下如何使用gcc/g生成和使用C静态链接库&#xff08;.a文件&#xff09;。 二.生成静态链接库 先看下目录结构 然后看下代码 //demo.h#ifndef DEMO_H #define DEMO_H#include<string&g…

C#-快速剖析文件和流,并使用

目录 一、概述 二、文件系统 1、检查驱动器信息 2、Path 3、文件和文件夹 三、流 1、FileStream 2、StreamWriter与StreamReader 3、BinaryWriter与BinaryReader 一、概述 文件&#xff0c;具有永久存储及特定顺序的字节组成的一个有序、具有名称的集合&#xff1b; …

题目:挑选子串(蓝桥OJ 1621)

题目描述&#xff1a; 解题思路&#xff1a; 采用双指针的快慢指针。与蓝桥OJ1372类似。 图解 题解&#xff1a; #include <bits/stdc.h> using namespace std;const int N 1e5 9; int a[N];int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n, m…

网站内容审核功能的重要性

网站内容审核功能的重要性在保护用户权益、维护网站形象、遵守法律法规等方面都起到了至关重要的作用。 维护网站的合法性和道德性&#xff1a;网站内容审核功能的存在可以帮助过滤和删除违法、淫秽、恶意、诈骗等不良内容&#xff0c;保证网站内容的合法性和道德性。 保护用…

实现跨VLAN通信、以及RIP路由协议的配置

一、如下图片&#xff1a; 1. 按照拓扑图所示&#xff0c;将8台计算机分别配置到相应的VLAN中。&#xff08;20分&#xff09; 2. 配置实现同一VLAN中的计算机可以通信。&#xff08;22分&#xff09; 3. 配置实现PC1,PC2,PC3,PC4可以互相通信&#xff0c;PC5,PC6,PC7,PC8可以互…

面向对象中的单例模式

1、什么是设计模式 设计模式就是前人根据实际的问题提出的问题解决方案&#xff0c;我们把这种就称之为设计模式。 2、单例模式 单例模式是一种常见的设计模式&#xff01; 所谓的设计模式&#xff0c;不是一种新的语法&#xff0c;而是人们在实际的应用中&#xff0c;面对…

计算机考研408-计算机网络、操作系统整书知识点脑图

计算机网络、操作系统整书知识点脑图 今天突然想起来考研期间为了方便记忆&#xff0c;费了很大力气整理了计算机网络、操作系统两本书知识点的脑图&#xff0c;想着放着也没啥用&#xff0c;分享出来给大家看看 但是思维导图格式的东西好像没法直接发成文章&#xff0c;要是…

(三潮来袭)探寻2023年科技变革潮流与2024年前瞻展望

2023年对于IT行业来说是一个动荡而又充满变革的一年。随着世界逐渐走出前几年的挑战&#xff0c;企业逐渐复苏&#xff0c;但这个行业仍然在经历着激烈的变革。在这个时候&#xff0c;我们看到了一些引人注目的技术变化和未来的趋势。 一、2023年回顾 关键词&#xff1a;Chat…

手持式安卓主板_PDA安卓板_智能手持终端方案

手持式安卓主板方案是一种智能终端设备&#xff0c;具备自动对焦和闪光灯功能&#xff0c;可以在昏暗的环境下快速扫描二维码并轻松采集数据。该方案还提供多渠道支付和数据采集功能&#xff0c;为用户提供了便捷的体验。 该方案的产品基于手持式安卓主板&#xff0c;并搭载了八…

Unity中后处理简介

文章目录 前言一、后处理的原理二、我们看一下Unity文档中&#xff0c;内置的后处理前后的效果后处理前&#xff1a;后处理后&#xff1a; 前言 我们在这篇文章中&#xff0c;了解一下Unity中的后处理效果 后期处理概述 一、后处理的原理 在后处理的过程中&#xff0c;我们主…

爱智EdgerOS之深入解析安全可靠的开放协议SDDC

一、协议简介 在 EdgerOS 的智慧生态场景中&#xff0c;许多智能设备或传感器的生命周期都与 SDDC 协议息息相关&#xff0c;这些设备可能是使用 libsddc 智能配网技术开发的&#xff0c;也有可能是因为主要功能上是使用其他技术如 MQTT、LoRa 等但是设备的上下线依然是使用上…

金蝶云星空表单服务规则设置-基础资料和复选框判断

文章目录 金蝶云星空表单服务规则设置-基础资料和复选框判断语法规则业务需求开发实现测试 金蝶云星空表单服务规则设置-基础资料和复选框判断 语法规则 基础资料判断&#xff1a;标识null 复选框判断打钩&#xff1a;标识true 业务需求 售后单审核时&#xff0c;如果物料启…

【接口技术】实验5:模/数(ADC0809)和数/模(DAC0832)转换

实验5 模/数(ADC0809)和数/模(DAC0832)转换实验 一、实验目的 1&#xff1a;了解模/数转换的基本原理&#xff0c;掌握ADC0809的使用方法。 2&#xff1a;了解数/模转换的基本原理&#xff0c;掌握DAC0832的使用方法。 二、实验内容 &#xff08;1&#xff09;模/数转换器…

浅析以太网接口及串口转以太网技术

浅析以太网接口 以太网相关接口主要包括&#xff1a;MII/RMII/SMII以及GMII/RGMII/SGMII接口。 一、MII接口 MII&#xff08;Media Independent Interface&#xff09;介质无关接口或称为媒体独立接口&#xff0c;它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和…

Qt + MySQL(简单的增删改查)

Qt编译MySql插件教程 帮助&#xff1a; SQL Programming QSqlDatabase 静态函数 1.drivers()&#xff0c;得到可以使用的数据库驱动名字的集合 [static] QStringList QSqlDatabase::drivers();2.addDatabase()&#xff0c;添加一个数据库实例 [static] QSqlDatabase QSql…

kennard-stone算法实现样本集划分(ks算法)

目录 一、 Kennard-Stone算法原理&#xff08;KS算法&#xff09; 二、Kennard-Stone算法作用 三、代码 四、对选出来的train样本使用T-SNE算法进行绘制 五、参考链接 一、 Kennard-Stone算法原理&#xff08;KS算法&#xff09; KS算法原理&#xff1a;把所有的样本都看…