sql语句如何修改Oracle两张引用表中的数据类型

一张中间表a的外键b_id引用了另一张b表的主键b_id 此时要把这两张表中的b_id varchar2类型改成number类型!
用 alter table b modify b_id number(7);这个语句会报"列类型与引用的列类型不兼容
".的错误 ,是因为a表没有改!

请问如何同时改掉两张表中这列的数据类型?
如果是不只两张,多张表引用呢?如何同时改?

这个没法做到同时

第一步,删除掉外键
第二步,用你的alter语句分别修改两张表的字段属性
第三步,再把外键创建起来

多表的话也得采用类似方法追问

额 忘记怎么删除外键了...也跟我说下吧

追答

alter table 表名 drop constraint 外键名;

温馨提示:内容为网友见解,仅供参考
无其他回答

sql语句如何修改Oracle两张引用表中的数据类型
第一步,删除掉外键 第二步,用你的alter语句分别修改两张表的字段属性 第三步,再把外键创建起来 多表的话也得采用类似方法

在oracle中怎样用一条sql语句更新两张有主外键关系的表的记录
作者表 A (ID,NAME,AGE,SEX)其中ID为主键,文章表B(ID,AID,ARTICLE)其中ID为主键,AID为外键。如果你希望更新表A中某个作者的ID,并同时更新文章表B中对应的数据,那么写一个触发器:create or replace trigger "A"after update of ID on A_author for each row begin if (:new.ID<>:o...

oracle的sql语句写法——涉及两个表的字段更新
set i.name = (select d.name from data_user_info d where d.id = i.id) -- 从data_user_info中取名称,条件是两者id 相等 where exists (select 1 from data_user_info d where d.id = i.id) -- 仅仅当data_info_user中有和info_user一致的id,才对info_user的数据更新 ...

oracle数据库如何修改字段的数据类型?
1、首先打开plsql,连接上oracle数据库,假设有一张数据库表叫做 tblTest,通过sql查询也可以看出,这里面是有测试数据的。2、oracle数据库添加列,比如,往测试表 tblTest 添加一个 日期类型的列 UpdateDate,sql语句就可以像下面这样实现,写完SQL之后,选中这一行sql,点击plsql左上角次轮状的图标执...

求oracle 从一个表中取出数据作为参数 修改另一个表的sql语句
1.查询a表结果,作为更新b表的条件;update table_b set col_1 = '123'where col_2 in (select col_22 from table_a where ...);2.查询a表结果,用来更新b表指定条件 update table_b set col_1 = (select col_11 from table_a where col_22 = table_b.col_2)where ...不知道你...

怎样用sql语句修改oracle中表的数据
添加一个和原字段同名的字段 ALTER TABLE 表名 ADD 字段名 VARCHAR2(30);将原来的数据更新到新字段中,这是要注意,一定要显示进行数据类型转换(不同于MSSQL)UPDATE 表名 SET 字段名 = CAST(字段名1 AS VARCHAR2(30));

求oracle 从一个表中取出数据作为参数 修改另一个表的sql语句
1、将数据表作以游标形式取数据;2、将取出数据经过逻辑判断后,执行UPDATE语句。declare v_1 varchar2(100);curor v_cur is select a_1 from A_table where ...; ---从一个表取数据 begin open v_cur fetch v_cur into v_1;exit when v_cur %notfound;if ... then ---判断是...

oracle SQL语句怎么修改数据表的字段允许为空?
字段允许为空的语句为:alter table 表名 alter column 列名 类型长度 null。数据库SQL语言的修改语句,可以用来修改基本表,其一般表示格式为:ALTER TABLE<表名>[改变方式]改变方式:1、 加一个栏位: ADD "栏位 1" "栏位 1 资料种类"2、删去一个栏位: DROP "栏位 1"3、改变栏位名称: ...

SQL 修改表中的列名(急~~~)
1、在oracle数据库中: ALTER TABLE 表名 RENAME COLUMN 列名 TO 新列名。2、在sqlserver数据库中:exec sp_rename '[表名].[列名]‘,’[表名].[新列名]'。3、在mysql数据库中:ALTER TABLE 表名 CHANGE 列名 新列名 列类型。

求教oracle两个表联合查询的sql语句
1、上面的sql是按照成绩降序排列后取出每个姓名的第一条记录,如果想换成升序把【order by b.成绩 desc】改成【order by b.成绩】即可。2、如果想取第二条记录把【where id = 1;】改成【where id = 2;】即可。3、如果想去前n条把【where id = 1;】改成【where id <=n;】即可。--- ...

相似回答
大家正在搜