Oracle修改一个已经存有数据的表的主键

要修改一个已经存有数据的表的主键,又不想影响原有数据。 通常有如下做法

1.当 主键无命名
create table t2 (
id integer primary key,
status varchar(10),
last_modified date default sysdate
);
select * from t2;
查看constraint_name
select u.constraint_name from user_cons_columns u where u.table_name=‘T2‘;
根据查出来的constraint_name删除主键
alert table t2 drop constraint SYS_C0010869

2.当有有命名

create table t3 (
id integer,
status varchar(10),
last_modified date default sysdate,
constraint yy primary key(id)
);
alert table t3 drop constraint yy;

//这里顺便附上查看表的列名SQL
select u.COLUMN_NAME from user_tab_columns u where u.TABLE_NAME=‘ALL_SALES‘

原文地址:http://blog.51cto.com/13765598/2120209

时间: 2024-11-06 21:17:17

Oracle修改一个已经存有数据的表的主键的相关文章

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i

Oracle游标-循环查询表中数据(表名),并执行

Oralce 表中存有一个字段,该字段存储表名,要把该表中的所有表名查询出来(即表名结果集),且执行结果集from 表名结果集: declare v_ccount varchar2(100); --定义一个游标变量 cursor c_job is --查询该表中的所有表名 select tablename from tbname; c_row c_job%rowtype; begin --循环待处理数据,即以上查出的结果集 for c_row in c_job loop ---执行语句 from

Oracle使用游标为所有用户表添加主键语句

应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在ID字段,则判断是否是整形,如果不是就重命名字段为[表名ID],然后新增ID,如果不存在则直接添加自增一ID的主键 操作说明:打开PQSQL连接数据库后直接执行下面的详细脚本代码运行即可,脚本有风险(会删除原来的索引跟主键约束),请不要轻易在正式运行的数据库上直接执行 --Oracle使用游标为所有用

表的操作-建立表-删除表-修改表的名字-修改列的名字及数据类型-删除/添加主键-在表的最后增加一列-查看表的结构

USE db; -- 列出查看当前数据库中的所有表 SHOW TABLES; SHOW TABLES LIKE 's%'; CREATE TABLE 表名 ( 列名 类型 修饰 约束, sid INT(3) UNSIGNED ZEROFILL PRIMARY KEY AUTO_INCREMENT sgender ENUM('男','女','保密') DEFAULT '男' )ENGINE=MYISAM DEFAULT CHARSET=utf8; -- 建立表 CREATE TABLE IF NO

ORACLE: 查询(看)表的主键、外键、唯一性约束和索引

ORACLE: 查询(看)表的主键.外键.唯一性约束和索引 1.查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 表名 2.查找表的主键(包括名称,构成列): select cu.* from user_co

如何使用sqlalchemy获取表的主键、以及每一个字段名

使用sqlalchemy获取到的结果只包含数据,不包含字段,那么我们如何获取到对应字段呢?以及如何获取某张表的主键呢? from sqlalchemy.ext.automap import automap_base from sqlalchemy.orm import sessionmaker from sqlalchemy import MetaData, inspect, create_engine engine = create_engine("postgresql://postgres:

Oracle 获取表的主键、外键以及唯一约束条件

Oracle 获取表的主键.外键以及唯一约束条件 Select a.Owner 主键拥有者, a.table_name 主键表, b.Column_Name 主键列, b.Constraint_Name 主键名 From user_Constraints a, user_Cons_Columns b Where a.Constraint_Type = 'P' --P-主键:R-外键:U-唯一约束 and a.Constraint_Name = b.Constraint_Name And a.Ow

oracle 如何获取表的主键列名,如何获取表的所有列名

获取表的主键列名 SQL  select   *   from   user_cons_columns     where   constraint_name   =   (select   constraint_name   from   user_constraints                 where   table_name   =   'BST_FAVORITE'  and   constraint_type   ='P'); 记住:表名要大写执行试试,该表所有主键都查出来了

给表追加主键-----报错ORA-02437: 无法验证 (DENGCHAO.TEST) - 违反主键

由于 这次 项目 做了 数据库 迁移(从 mysql 转到oracle  用的是navicat) 的工具  所以导致很多主键都丢失了 导致数据库很多 数据的id重复  导致系统修改一条数据的时候 出现很多值相同  郁闷了大半天 然后 打算在plsql中 给现有的某张表  追加主键 教科书形式 如下 /* 1.创建表的同时创建主键约束 (1)无命名 create table student (  studentid int primary key not null,  studentname va