删除未命名(系统命名)主键约束

2023-11-14

由于表结构的变动需要删除,现有的主键约束,增加新的主键约束.但主键约束没有指定约束名生成,无法直接删除该主键约束.

需要先查询出主键约束名,然后才能够进行删除

原本是想通过该sql 语句在查询的时候直接进行删除,但是sql一直提示报错,原因不明白.

alter table 表名 drop constraint     (select  a.constraint_name    from user_cons_columns A,user_constraints B
where A.constraint_name=B.constraint_name and A.table_name='表名' and B.constraint_type='P')

后来想通过块的方式,将变量对应的值给相应的sql,但是也失败了,可能结果与上述的sql写法内核是一致的,最终通过拼接sql语句的办法总算是解决了

以下是成功代码

--删除原有的主键约束
--添加id字段
--更新主键约束为ID
DECLARE sql_drop_pri VARCHAR2(64);
 constraintName VARCHAR2(64) DEFAULT '0';
BEGIN
  select  'alter table 表名 drop constraint   '   ||      (select  a.constraint_name    from user_cons_columns A,user_constraints B
where A.constraint_name=B.constraint_name and A.table_name='表名' and B.constraint_type='P') into sql_drop_pri  from dual;
select  a.constraint_name  INTO constraintName   from user_cons_columns A,user_constraints B
where A.constraint_name=B.constraint_name and A.table_name='表名' and B.constraint_type='P';
if constraintName !='0' then
                execute immediate sql_drop_pri;        
end if;

--不抛出异常的话就会报no_data_found即使对相应的变量进行nvl()函数处理也没用
exception when no_data_found then
constraintName :='0';
END;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除未命名(系统命名)主键约束 的相关文章

  • Oracle SQL 列转行(无需 UNPIVOT)

    我目前拥有的 Team User Apples Oranges Pears Red Adam 4 5 6 Red Avril 11 12 13 Blue David 21 22 23 需要什么 Team User Product Count
  • postgresql 中的咨询锁超时

    我正在从 ORACLE 迁移 目前我正在尝试移植此呼叫 lkstat DBMS LOCK REQUEST lkhndl DBMS LOCK X MODE lktimeout true 这个功能 http docs oracle com cd
  • 托管 ODP.NET 驱动程序未显示在“数据源”对话框中

    在我的计算机上安装托管 ODP NET 后 ODP NET 托管驱动程序没有出现在里面选择数据源Visual Studio 2013 Professional 中的对话框 它应该是这样的 这就是它在我的机器上的实际外观 我已按照 轻松驱动
  • Python、Oracle DB、列中的 XML 数据,获取 cx_Oracle.Object

    我正在使用 python 从 Oracle DB 获取数据 所有行都有一个包含 XML 数据的列 当我使用 python 打印从 Oracle DB 获取的数据时 包含 XML 数据的列将打印为 0x7fffe373b960 处的 cx O
  • 如何使用 oracle SQL 执行线性插值?

    我正在尝试使用 Oracle 11g 开发中为 11 1 生产中为 11 2 进行数值分析 特别是对具有三列感兴趣的表进行线性插值 时间戳 deviceid 和值 值列保存来自设备 具有 ID deviceid 的数据 这些数据是在时间戳中
  • oracle查找两个表之间的差异

    我有两个结构相同的表 一个是临时的 另一个是产品的 每次都会加载整个数据集 有时该数据集会从先前的数据集中删除记录 我首先将数据集加载到临时表中 如果删除了任何记录 我也想从产品表中删除它们 那么如何找到prod中存在但temp中不存在的记
  • 如何通过ODBC检索Oracle数据库函数的结果?

    我在通过 ODBC 调用 Oracle 存储函数 而不是过程 时遇到问题 我的函数非常简单 它只是连接两个字符串 我可以通过以下方式调用它 rs c execute SELECT add str yogi bubu FROM dual fo
  • Oracle DataAccess 相关:“动态程序集中不支持调用的成员。”

    据我了解 此类错误已在 SO 上讨论过多次 有些人认为这是 DLL 文件中的错误 有些人通过更改 DLL 版本来解决 其他人似乎没有任何线索 无论如何 我只是发帖试试运气 在 C GUI 上的网格中选择一行时 我的应用程序崩溃了 stack
  • 根据 Oracle SQL 中的营业时间计算时间

    我希望根据工作时间计算任务开始和结束之间的时间 我有以下示例数据 TASK START TIME END TIME A 16 JAN 17 10 00 23 JAN 17 11 35 B 18 JAN 17 17 53 19 JAN 17
  • WHERE IN 条件不接受字符串值

    我正在动态构造一个带有名称的字符串用户数据在 PL Sql 过程中通过附加用户名 单引号 和逗号 的形式 abc123 xyz456 pqr789 但是当我将此字符串传递给 SELECT 语句的 WHERE IN 条件时 SELECT FR
  • 当网站停止时,Oracle 数据提供程序会固定 IIS 工作进程

    我们在 Oracle 11g 第 2 版中遇到了一个严重的问题 其中 w3wp 进程接管了整个处理器核心 并且调试显示 Oracle 数据提供程序无限地抛出 ThreadAbortException 开发人员通过执行以下操作发现了此问题 1
  • 关于pl/sql存储程序文本的问题

    我使用 TOAD 进行 PL SQL 开发 在 TOAD 中 当我输入过程名称并按 f4 时 我可以看到该过程的源代码 我认为 TOAD 从 v sqltext 视图获取源代码 为了证实我的想法 我写了一个查询 select from v
  • Oracle 中的函数与过程

    Oracle 中函数和过程的主要区别是什么 如果我可以用函数完成所有事情 为什么我必须使用过程 如果我无法在sql语句中调用过程 好吧 我会编写一个函数来完成相同的工作 过程不返回值 好的 在任何 dml 操作后我将仅返回 sql rowc
  • 使用 to_char 格式化间隔

    以下 SQL 命令 select TO CHAR NVL arg1 arg2 TO DSINTERVAL 0 00 00 00 from table1 生成格式为 000000000 00 03 01 954000 的结果 是否可以在 to
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • 替换 Oracle 包的一部分

    我需要修改包内的一个过程 我需要接触声明和实施 由于我正在维护每次修改的补丁文件 因此我希望更改最小化 我可以仅使用更改的过程更新包 如果是 如何更新 还是需要提供完整的包定义和实现 您需要替换整个包规范和主体 您不能仅对包的一部分进行操作
  • T-SQL:如何使用 SELECT 创建表?

    在 oracle 中 您可以发出 create table foo as select from bar 等效的 T SQL 语句是什么 您可以使用SELECT INTO http msdn microsoft com en us libr
  • FROM 子句中的嵌套括号是否有效的 Oracle SQL 语法?

    此查询使用正确的 Oracle 语法吗 select from dual a where a dummy X 它可以在 11g 和 12c 中运行 但它是真正有效的语法吗 或者这只是一个编译器 错误 将来可能会修复 导致代码失败 我怀疑这是
  • 如何在Oracle中使用Timestamp_to_scn和Scn_to_timestamp?

    我的查询结果是这样的 select cast to date a start time mm dd yyyy hh mi ss pm as timestamp date of call ora rowscn from calling tab
  • 通过 Oracle 的数据库链接运行 SQL Server 存储过程

    参考如何通过数据库链接执行 Oracle 存储过程 https stackoverflow com questions 240788 how to execute an oracle stored procedure via a datab

随机推荐

  • Idea开启Run DashBoard配置

    找到 idea文件下的workspace xml 并找到RunDashboard
  • LeetCode:二叉搜索树的属性、修改与构造(12道经典题目)

    LeetCode 二叉搜索树的属性 修改与构造 12道经典题目 本文带来与二叉搜索树的属性 修改与构造有关的经典题目 主要实现是C 700 二叉搜索树中的搜索 98 验证二叉搜索树 530 二叉搜索树的最小绝对差 501 二叉搜索树中的众数
  • Java_Could not find resource SqlMapConfig.xml

    目录结构如图 解决办法 选中目录config 右键build path gt use as source folder
  • Linux中如何设置静态IP

    1 打开虚拟机编辑 gt 虚拟网络编辑器 选择VMnet8 设置子网IP 子网掩码 网关 点击确定 2 按照以下标注修改网卡的配置文件 gt 重启网络 gt 查询IP root centos7 vim etc sysconfig netwo
  • ECCO首家全球旗舰店在上海正式开业;海立马瑞利全球总部启动运营;西门子医疗完成收购瓦里安

    一周企业资讯看点 ECCO首家全球旗舰店正式开业 海立马瑞利全球总部启动运营 赛诺菲中国首个全球研究院落成启用 西门子医疗完成收购瓦里安 温德姆酒店集团计划今年大中华区新开超过100家酒店 Club Med丽江度假村预计将于今年秋天开业 三
  • Windows下在虚拟机VMware中安装Ubuntu 18.04(一个安装了很多次Ubuntu的详细步骤和经验,避免踩不必要的坑)

    我安装了ubuntu很多次 以前在网上学习了很多版本的安装步骤 以前经验不足 出现了很多问题 比如说 学习过程中出现内存或磁盘不足 而且有时候无法扩展或扩展很麻烦 这很浪费时间和降低学习效率 甚至Ubuntu有时会很卡 启动慢 我觉得最严重
  • ag-grid基本配置

    columnDefs headerName 序号 必填 显示在表头的文本 width 50 宽度 minWidth 300 最小宽度 多数情况是在自适应时 设置使用 maxWidth 300 最大宽度 多数情况是在自适应时 设置使用 cel
  • 设计模式(一) 工厂方法模式

    介绍 关于设计模式 大家可能已经有很多了解了 因此这里直接开始吧 首先来介绍一下工厂方法模式 它是一种创建型模式 在设计模式 可复用面向对象软件的基础中对工厂方法由如下的解释 工厂方法模式的实质是 定义一个创建对象的接口 但让实现这个接口的
  • Intellij IDEA中使用Protobuf的正确姿势

    1 proto文件语法高亮显示 需要安装Protobuf Support插件 依次点击Intellij中的 File gt Settings gt Plugins gt Browse repositories 如下所示 输入Protobuf
  • eclipse中将项目打包成jar,并启动

    第一种 利用eclipse中自带的export功能 第一种方法分两种情况先来看第一种情况 没有引用外部jar的项目打包 步骤一 右键点击项目选择导出 export 选择java gt jar文件 不是选择可运行jar文件 步骤二 选择你要导
  • python3.7 解决古代计算题--牛刀小试

    首先来看下题目 今有物不知其数 三三数之剩二 五五数之剩三 七七数之剩二 问物几何 第一代 print 今有物不知其数 三三数之剩二 五五数之剩三 七七数之剩二 问物几何 n number int input 请输入你认为符合条件的数字 i
  • 【计组笔记-5】详细测试c++中类型转换的溢出截断处理

    计组笔记 5 详细测试c 中类型转换的溢出截断处理 1 将小数赋值给float 2 将整数赋值给float 3 将整数赋值给int 3 1 算术溢出 3 2 非算术溢出 等于32位 3 3 非算术溢出 大于32位 4 将小数赋值给int 5
  • python的扩展控制鼠标

    1 使用资料 PyAutoGUI 简介 今天要介绍的工具就是 PyAutoGUI 看到这个名字 就能猜到它的作用 无非用 Python 自动处理图形界面的操作 的确是这样 你可以使用编程的方式来控制电脑的鼠标和键盘 它有两个优点 跨平台 支
  • condavalueerror: malformed version string ‘~‘: invalid character(s)解决方法

    安装python包时出现condavalueerror malformed version string invalid character s 的错误提示解决方法如下 1 使用如下命令删除之前的源 若之前没有在conda中进行换源操作 此
  • ajax请求二进制流图片并渲染到html中img标签

    说明 后台返回图片二进制流 需要使用get请求获取返回结果 并且将返回的二进制流以图片形式显示在页面img中 但是日常显示图片都诸如这种形式 img src 图片路径 地址 alt 以上需求不能将后端地址直接填入src 原因是需要获取图片请
  • 关于5G与网络

    目录 一 关于5G和网络的组成 1 什么是网络 2 OSI七层模型 3 数据封装过程 二 Tcp IP协议族的组成 1 各个层级常规的协议 2 各个层级对应的设备关系 一 关于5G和网络的组成 移动通信延续着每十年一代技术的发展规律 已历经
  • 使用 cancel token 取消接口请求

    cancel const CancelToken axios CancelToken let cancel axios defaults baseURL process env NODE ENV production process env
  • Burp Suite代理抓包和浏览器代理设置

    本文解决使用Burp Suite代理时出现的一些问题 比如出现代理服务器异常 建立安全连接失败等等 安全连接失败 a 在使用代理的时候经常出现下图所示的问题 这时可能是burp suite证书的问题 b 从burp suite导出证书 这个
  • Mysql有则更新无则新增的几种方案

    环境准备 mysql版本 5 7 29 测试表创建及初始化 建表 CREATE TABLE test user id bigint 20 unsigned NOT NULL AUTO INCREMENT COMMENT 主键 uid big
  • 删除未命名(系统命名)主键约束

    由于表结构的变动需要删除 现有的主键约束 增加新的主键约束 但主键约束没有指定约束名生成 无法直接删除该主键约束 需要先查询出主键约束名 然后才能够进行删除 原本是想通过该sql 语句在查询的时候直接进行删除 但是sql一直提示报错 原因不