在oracle中更改主键的数据类型时应该遵循哪些步骤sql
What steps should we follow while changing the datatype of a primary key in oracle sql
我有一个 table 与此类似。
CREATE TABLE customers (
customer_id NUMBER(7,0) NOT NULL,
customer_name VARCHAR2(50) NOT NULL,
CONSTRAINT customers_pk PRIMARY_KEY (customer_id)
);
在 table 中有一些值。
我想将主键 customer_id
的数据类型更改为 NUMBER(10, 0)
。那么在执行ALTER
命令之前我们要经过哪些步骤呢? (此列未在任何 table 中作为外键引用)
具体来说,
默认情况下,我们在 oracle SQL 的主列上有一个索引。那么我们是否应该放弃主键约束,然后执行 ALTER
命令呢?
还有其他我们需要考虑的事项吗?
对于像您这样的情况,您无需执行任何操作 - 只需 执行即可:
SQL> create table customers (
2 customer_id number(7, 0),
3 customer_name varchar2(50),
4 constraint customer_pk primary key (customer_id));
Table created.
SQL> insert into customers
2 select 1234566, 'Little' from dual union all
3 select 98876 , 'Foot' from dual;
2 rows created.
SQL> alter table customers modify customer_id number(8, 0);
Table altered.
SQL> select constraint_name from user_constraints where table_name = 'CUSTOMERS';
CONSTRAINT_NAME
------------------------------
CUSTOMER_PK
SQL>
但是,如果您必须使列 更小 或修改其数据类型 - 那就是另一回事了。幸运的是你,不是你的。
我有一个 table 与此类似。
CREATE TABLE customers (
customer_id NUMBER(7,0) NOT NULL,
customer_name VARCHAR2(50) NOT NULL,
CONSTRAINT customers_pk PRIMARY_KEY (customer_id)
);
在 table 中有一些值。
我想将主键 customer_id
的数据类型更改为 NUMBER(10, 0)
。那么在执行ALTER
命令之前我们要经过哪些步骤呢? (此列未在任何 table 中作为外键引用)
具体来说,
默认情况下,我们在 oracle SQL 的主列上有一个索引。那么我们是否应该放弃主键约束,然后执行 ALTER
命令呢?
还有其他我们需要考虑的事项吗?
对于像您这样的情况,您无需执行任何操作 - 只需 执行即可:
SQL> create table customers (
2 customer_id number(7, 0),
3 customer_name varchar2(50),
4 constraint customer_pk primary key (customer_id));
Table created.
SQL> insert into customers
2 select 1234566, 'Little' from dual union all
3 select 98876 , 'Foot' from dual;
2 rows created.
SQL> alter table customers modify customer_id number(8, 0);
Table altered.
SQL> select constraint_name from user_constraints where table_name = 'CUSTOMERS';
CONSTRAINT_NAME
------------------------------
CUSTOMER_PK
SQL>
但是,如果您必须使列 更小 或修改其数据类型 - 那就是另一回事了。幸运的是你,不是你的。