为什么在Oracle中使用alter column修改数据类型报错?怎么样解决?

为什么在Oracle中使用alter column修改数据类型报错?怎么样解决?
查资料后有大神说是因为在修改数据类型时,如果是小类型修改为大类型,不会报错;如果是大类型修改为小类型,则应先清除掉修改的字段的值
问题一:如果如上述所诉,char类型和varchar数据类型大小不一致吗?
问题二:清楚修改的字段的值使用update语句,但是我刚创建的表,表中并没有数据,应该清除什么字段呢?
命令行如下:

SQL> create table course2(
2 cno char(2) primary key,
3 cname char(14) not null,
4 cpno char(2),
5 ccredit number(1) not null,
6 foreign references course2(cno)
7 );

表已创建。

SQL> insert into course2 values('2','数学',' ','2');
insert into course2 values('2','数学',' ','2')
*
第 1 行出现错误:
ORA-00947: 没有足够的值

SQL> insert into course2 values('2','数学','2','2');
insert into course2 values('2','数学','2','2')
*
第 1 行出现错误:
ORA-00947: 没有足够的值

SQL> alter table course2 alter column sname varchar(14);
alter table course2 alter column sname varchar(14)
*
第 1 行出现错误:
ORA-01735: 无效的 ALTER TABLE 选项

求大神仔细回复,感谢

1个回答

alter table course2 modify sname varchar(14);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Oracle中使用alter column修改数据类型报错
为什么在Oracle中使用alter column修改数据类型报错?怎么样解决?rn查资料后有大神说是因为在修改数据类型时,如果是小类型修改为大类型,不会报错;如果是大类型修改为小类型,则应先清除掉修改的字段的值rn问题一:如果如上述所诉,char类型和varchar数据类型大小不一致吗?rn问题二:清楚修改的字段的值使用update语句,但是我刚创建的表,表中并没有数据,应该清除什么字段呢?rn命令行如下:rnrnSQL> create table course2(rn 2 cno char(2) primary key,rn 3 cname char(14) not null,rn 4 cpno char(2),rn 5 ccredit number(1) not null,rn 6 foreign references course2(cno)rn 7 );rnrn表已创建。rnrnSQL> insert into course2 values('2','数学',' ','2');rninsert into course2 values('2','数学',' ','2')rn *rn第 1 行出现错误:rnORA-00947: 没有足够的值rnrnrnSQL> insert into course2 values('2','数学','2','2');rninsert into course2 values('2','数学','2','2')rn *rn第 1 行出现错误:rnORA-00947: 没有足够的值rnrnrnSQL> alter table course2 alter column sname varchar(14);rnalter table course2 alter column sname varchar(14)rn *rn第 1 行出现错误:rnORA-01735: 无效的 ALTER TABLE 选项rnrnrn求大神仔细回复,感谢rnrnrnrn
alter table alter column可以同时修改多个列吗?
alter table alter column可以同时修改多个列吗?
Oracle中用alter table添加column
在MySql中可以用rn[code=SQL]rnALTER TABLE table_namernADD COLUMN name1 varchar(30) FIRST;rn[/code]rnrnrn在Oracle中有没有类似的关键字可以控制新增列的位置?
alter column errors
2009-08-26 14:38:42,562 ERROR (org.hibernate.tool.hbm2ddl.SchemaUpdate:156) - ORA-01430: 表中已经存在要添加的列rnrn2009-08-26 14:38:42,593 ERROR (org.hibernate.tool.hbm2ddl.SchemaUpdate:155) - Unsuccessful: alter table Employees add name varchar2(25 char)rn2009-08-26 14:38:42,593 ERROR (org.hibernate.tool.hbm2ddl.SchemaUpdate:156) - ORA-01430: 表中已经存在要添加的列rnrn2009-08-26 14:38:42,625 ERROR (org.hibernate.tool.hbm2ddl.SchemaUpdate:155) - Unsuccessful: alter table Employees add note varchar2(100 char)rn2009-08-26 14:38:42,625 ERROR (org.hibernate.tool.hbm2ddl.SchemaUpdate:156) - ORA-01430: 表中已经存在要添加的列rnrn2009-08-26 14:38:42,640 ERROR (org.hibernate.tool.hbm2ddl.SchemaUpdate:155) - Unsuccessful: alter table Employees add sex varchar2(5 char)rn2009-08-26 14:38:42,640 ERROR (org.hibernate.tool.hbm2ddl.SchemaUpdate:156) - ORA-01430: 表中已经存在要添加的列rnrn2009-08-26 14:38:42,656 ERROR (org.hibernate.tool.hbm2ddl.SchemaUpdate:155) - Unsuccessful: alter table Employees add birthday datern是什么原因呢????
alter column 问题
表中有一个字段 a char(1) nullrn我想改成a char(1) defaut '0' not nullrn请问怎么处理?
Alter Column 的问题
请问各位高手,怎么把数据表中存在的一列上添加一个列值自动增长的属性rn我用Alter Column 总是用不正确,焦急等待rn
用alter修改数据库报错~
alter table userinforrnadd 身份证号码 int not nullrnrnrn服务器: 消息 4901,级别 16,状态 1,行 1rnALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。因为列 '身份证号码' 不能包含空值且未指定 DEFAULT 定义,所以无法将该列添加到表 'userinfor' 中。rnrn怎么办哦?rn
ALTER TABLE [xxx] ALTER COLUMN [TMSTAMP] TIMESTAMP 为什么失败?
[TMSTAMP] 原数据类型为 binary ,在企业管理器里手工更改可以,用语句提示 服务器: 消息 4927,级别 16,状态 1,行 1rn无法将列 'TMSTAMP' 更改为数据类型 timestamp。rn请高手指教?因为要改的太多了,如果用手工,时间太长。
ALTER COLUMN的问题
在数据库中执行ALTER TABLE AE ALTER COLUMN MYTEST Varchar(3)语句,出现如下错误提示:rnServer: Msg 8152, Level 16, State 9, Line 1rnString or binary data would be truncated.rnThe statement has been terminated.rn请问怎样才能强制转换字段类型?
How To Alter Column
ALTER PROCEDURE dbo.AlterTableColumnrnASrn DECLARE @LastError intrn DECLARE @sql varchar(200)rn SELECT @sql = ''rnrn DECLARE cursorAlter CURSOR READ_ONLY FORrn SELECT sysobjects.name AS ObjName, rn syscolumns.name AS ColName,rn CASE syscolumns.isnullablern WHEN 0 THEN 'NOT NULL' rn ELSE 'NULL' END AS IsNullable,rn CONVERT(nvarchar(100), syscolumns.collation) AS Collation, rn CONVERT(varchar(10), syscolumns.length) AS ColLengthrn FROM sysobjects INNER JOIN syscolumns rn ON sysobjects.id = syscolumns.idrn WHERE(sysobjects.name LIKE N'U%') --User Tablern AND (sysobjects.type = N'U' rn OR sysobjects.type = 'P')--User Table or Store Procedurern AND (syscolumns.xtype = 167) --varcharrnrn DECLARE @objName varchar(20),--Table Namern @ColName varchar(20),--Column Namern @IsNullable varchar(8),--Null Or Not Nullrn @Collation varchar(100),--COLLATErn @ColLength varchar(10) --Column Lengthrnrn OPEN cursorAlter rn FETCH NEXT FROM cursorAlter INTOrn @objName,@ColName,@IsNullable,@Collation,@ColLengthrn rn WHILE (@@fetch_status <> -1)rn BEGINrn IF (@@fetch_status <> -2)rn BEGINrn SELECT @sql = 'ALTER TABLE [dbo].[' + @objName + ']'rn +' ALTER COLUMN [' +@ColName + ']'rn +' [nvarchar] (' + @ColLength + ')' rnrn IF ISNULL(@Collation,'') <> ''rn BEGINrn SELECT @sql = @sql + ' COLLATE ' + @Collationrn ENDrn SELECT @sql = @sql + ' ' + @IsNullable + ';'rn ENDrn FETCH NEXT FROM cursorAlter INTO rn @objName,@ColName,@IsNullable,@Collation,@ColLengthrn ENDrnrn CLOSE cursorAlterrn DEALLOCATE cursorAlterrnrn BEGIN TRANSACTIONrn rn IF @sql <> '' rn EXEC(@sql)rn rn SELECT @LastError = @@ERRORrn IF @LastError<> 0rn BEGINrn ROLLBACK TRANSACTIONrn RETURN @LastErrorrn ENDrn rn COMMIT TRANSACTIONrnrn RETURN 0rnrn--------------------------------------------------------rnRunning Error :rnrnEXCE AlterTableColumnrnGOrnrnRunning dbo."AlterTableColumn".rnrn物件 'DF_U000M_Order_No' 與 資料行 'Order_No' 具相依性。rnrnHow to Alter ?rnThanx !!
Alter Column问题
[code=SQL]rn-- first timernALTER TABLE dbo.MyTable ALTER COLUMN MyColumn NVARCHAR(200)rnGOrn-- second timernALTER TABLE dbo.MyTable ALTER COLUMN MyColumn NVARCHAR(200)rnGOrn[/code]rn我的问题是执行第二遍的时候,数据库会不会真的去修改这一列?我有什么工具可以跟踪或者数据去证明第二句执行后有没有真的去改了?rnrnThanks in advance!
使用alter修改表结构
从0开始,Linux云计算系列课程,包含Linux初级运维、运维、初级架构师、云计算运维及开发.....
Alter table alter column修改字段问题
现在有一个数据表中字段L41,数据类型为decimal,且带公式:(round(([L9] + [L10]),2))rn使用如下语句修改,但改不了。rnrnAlter table bj_gzbxz alter column L41 as (round(([L9]+[L10]+[L12]),2))rnrn请高手指点!
关于ALTER TABLE tablename ALTER COLUMN .... 的疑问
众所周知,这个语句是用来修改列的,我想问一下:rnrn 1,这语句可修改列的类型吗?如将VARCHAR改成INT,行吗?rn rn 2,这语句可修改列的约束吗?如添加主关键字约束或删除主关键字约束或将外部关键字约束改成主关键字约束?rnrnrn 3,另外,在添加约束的SQL语句中,可以将一列已是主关键字约束的列再添加约束,如添加外部关键字约束,使该列既是主关键字约束又是外部关键字约束吗?rnrn 4,有没有修改列的SQL语句?rnrn像这些修改列包括列的类型,列的约束等,若列已存在违反类型或约束的数据,怎麽办?
为什么alter table 一支报错?
alter table 收支表rnreplace 收入 default 3000rnrnrn服务器: 消息 170,级别 15,状态 1,行 2rn第 2 行: '收入' 附近有语法错误。rn
ORACLE修改表属性|ALTER
例如,想修改表tb1中的属性cod1 VARCHAR2(50),长度修改为100。 ALTER table tb1 MODIFY(col1 VARCHAR2(100));   如需要修改属性col1的名称为col2。 ALTER TABLE tb1 MODIFY(col1 VARHCAR2(50), col2 VARCHAR2(100));   仅修改字段名: ALTER T...
Oracle里 alter table xx alter column yy char(3)为什么不对?
Oracle里 alter table xx alter column yy char(3)为什么不对?这个在sqlserver里可以的。我刚刚用oracle,许多地方不太熟悉。我用的是oracle8,用sql*plus写的这句,或者哪位知道怎么删除一个字段也可以(用sql语句),(alter table xx drop column yy 不对,很奇怪!)。另外请问有没有给oracle8作的第三方可视化建库工具?
alter column的问题,请指教!
ALTER TABLE dbo.ACS_Config rnalter column ConnectID int not nullrn在查询分析器中按分析查询rn报如下错误rn服务器: 消息 170,级别 15,状态 1,行 2rn第 2 行: 'column' 附近有语法错误。rnrn但在别的数据库中就没这个问题rn会是什么原因呢?rn是数据库哪里没有设置对吧???
ALTER COLUMN的问题,还望指教!
我想改变一个字段的类型为decimal,并且需要设置该字段的小数位数为3,我知道create table是这样写的:create table 表名 (列名 [decimal](18, 3) NULL)。不知道ALTER COLUMN该如何写法,我试着这么写:ALTER TABLE 表名 ALTER COLUMN 列名 [decimal](18 3) NULL,但不行,还望指教,谢谢!
为什么使用typedef修改数据类型名称的时候报错
#define _CRT_SECURE_NO_DEPRECATEnnnn#includenn#includennvoid main() nn struct Member n char ID[7];n char name[10];nn char sex;n int age;nn int points;nnn ;nn typedef Member ok;nn ok mem;n printf("Input member ID:");nn scanf("%s", mem.ID);nn printf("Input member name:");nn scanf("%s", mem.name);nn getchar();nn printf("Input member sex:");nn scanf("%c", &mem.sex);nn getchar();nn printf("Input member age:");nn scanf("%d", &mem.age);nn getchar();nn printf("Input member points:");nn scanf("%d", &mem.points);nn printf("ID Name Sex Age Points \n");nn printf("%s %s %c %d %d ", mem.ID, mem.name,mem.sex, mem.age, mem.points);nn system("pause");nnnn
请问一个alter column的问题。
alter table hr_holidayrnalter column DayNumber decimal(18,4) not null default(0)rnrn报错 rnrn消息 156,级别 15,状态 1,第 3 行rn关键字 'default' 附近有语法错误。rnrn请问要怎么改更呢?
使用alter语句修改表
alter table table_name add column_name | nodify column_name | drop column column_name; add : 添加 modify : 修改 drop : 删除 cascade constraints : 约束
修改oracle字段数据类型
项目之前没规划好,现在发现数据库里有好多varchar2(200,byte)这样的数据类型,导致应用出一些问题,现在要将varchar2(200,byte)这样的类型改成nvarchar2(200),但是改变的时候这个长度是怎么算?200不变还是改成800?谢谢!
oracle中怎么样做自定义数据类型
仅仅要求是rntypedef t_name varchar(500))rntypedef t_age intrn之类的rnrnxie谢谢
ORACLE分表,增加分表报错alter无效
alter fa_val_chag_test add partition data_2010 values less than (to_date('2011-01-01','yyyy-mm-dd')) tablespace jszc;rn执行这个就提示alter无效。rnrnrn前面建表的时候的分表语句:rn......rnpartition by range (chag_date)rn(rnpartition data_2007 values less than (to_date('2008-01-01','yyyy-mm-dd')) tablespace jszc,rnpartition data_2008 values less than (to_date('2009-01-01','yyyy-mm-dd')) tablespace jszc,rnpartition data_2009 values less than (to_date('2010-01-01','yyyy-mm-dd')) tablespace jszc)
数据类型为什么修改不了
在SQL SERVER 修改数据类型总是出现“磁盘空间不够,内存不够“rn为什么?我要怎么做就可以了?
alter column 怎么同时修改多个字段的类型
在sql语句中,怎么用alter column 怎么同时修改多个字段的类型?
oracle常用命令--更新/修改表数据之alter命令
修改-字段的数据类型–字段数据的长度 alter table 表名 modify (字段名 字段类型(字段长度))例如: alter table customer modify (address varchar(100))
SQL中alter的使用
alter table footprint add constraint pk_footprint primary key (uid,pid) --添加主键约束 alter table footprint add constraint FK_product_footprint foreign key(pid) references product(pid) --添加外键 alter table f...
DB2Version8.1不支持Alter ALTER TABLE tablename DROP COLUMN columnname?
在Oralce8.1.7中有如下表格:rnCREATE TABLE “ZQTEST”rn( “TOID” CHAR(6) NOT NULL,rn “TNAME” VARCHAR(20) ,rn “TAGE” NUMBER(3),rn “TPHONE” VARCHAR(20),rnPRIMARY KEY(TOID)rn)rn插入一条记录rnINSERT INTO ZQTEST VALUES(‘000001’,’ZQ’,31,’12345678’)rn使用 ALTER TABLE ZQTEST DROP COLUMN TPHONE 通过了rnrn在DB2version8.1中rnCREATE TABLE ZQTEST (rn TOID CHAR(6) NOT NULL,rn TNAME VARCHAR(20),rn TAGE SMALLINT,rn TPHONE VARCHAR(20),rn PRIMARY KEY(TOID)rn)rn插入一条记录rnINSERT INTO "ZQTEST" ("TOID","TNAME","TAGE","TPHONE") VALUES ('000001','ZHUQIANG',31,'12345678');rn使用 ALTER TABLE ZQTEST DROP COLUMN TPHONE 不能通过rn报错:rnSQL0104N 在 "ER TABLE ZQTEST DROP" 之后发现意外的标记 rn"COLUMN"。期望的标记可能包括:"CONSTRAINT rn
alter table tabname alter column colname tinyint default 0
这句执行时提示“在关键字 'default' 附近有语法错误”,可我真不知道是怎么错了的,麻烦高手们指点一下,谢谢!
DB2中修改列(column)的数据类型(Data Type)
无论是开发人员,或者数据库管理员,无论我们如何努力,如何小心,都难免会需要更改表子段的类型。 主要有以下原因:  字段长度不够用字段类型和本地数据库的其它表相同业务含义的字段没有保持一致字段类型和外部系统相同业务含义的字段没有保持一致 在DB2中该如何修改字段类型呢? 基本语法: alter table alter column set data type Examples:
怎么样才能修改oracle使用的jdk版本?
怎么样才能修改oracle使用的jdk版本? rn系统:win2k、oracle92rn操作系统有安装jdk,版本是1。5的,但oracle自带的jdk是1。3的。rn现使用java存储过程,但编译需要1。5的jdk,可是oracle编译却是使用1。3的,编译通不过。能否修改为使用1。5的呢?怎么修改?rnrn
ALTER TABLE 语句与 COLUMN CHECK 约束 冲突 要怎么解决?
我用alter table 向表1中的列1增加一个约束1rn执行结果提示我:rnALTER TABLE 语句与 COLUMN CHECK 约束1 冲突 rnrn一般是指表中已有这个约束了。rn但我rnexec sp_helpconstraint 表1rn根本没有约束1的存在rnrn那为什么还会有冲突呢?要怎么解决?rnrn(向这个表中其他列添加同样功能的约束都没有问题)rn
alter table zb_zzb alter column jflxdm varchar(40)
总是报错rn 对象 'DF__ZB_ZZB__Jflxdm__740841F9' 依赖于 列 'jflxdm'。rn原来的字段jflxdm有not null,default ('1')rnrn请问如何解决啊?rn
急救 alter table aboutus alter column content ntext
为什么不能执行? content 原为 text
转换数据类型报错怎么解决?
DECLARE @Name varchar(50)rn SET @Name=20.00rn rn SELECT (Cast((@Name) As Int))rnrn将 varchar 值 '20.00' 转换为数据类型为 int 的列时发生语法错误。rnrn上面是个实验,我数据库里有个字段数据类型是 varchar的,但里面的数据都是整数后面带点00的,我想在查询时转换成 int型。
|zyciis|alter table table alter column Name nvarchar(50) 报错,我想是因为约束的问题
原:http://topic.csdn.net/u/20100207/18/97b8dfc9-0bf6-4868-af0d-0d238d0ca8c8.html?23792rnrnalter table [IPC_ShipmentWeight] alter column [Name] nvarchar(50)rn出错报:rn消息 5074,级别 16,状态 1,第 1 行rn对象'DF_IPC_ShipmentWeight_Name' 依赖于 列'Name'。rn消息 4922,级别 16,状态 9,第 1 行rn由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN Name 失败。rnrn我想是因为我的Name设置了一个默认值的约束的问题rn-----------rn那语句应该怎么写才能把字段类型更改掉又不影响他的约束呢?rn谢谢
alter数据库报错
sp_help "userinfor"rnalter table userinforrnalter column id identity(100000,1)rnrnrn服务器: 消息 156,级别 15,状态 1,行 3rn在关键字 'identity' 附近有语法错误。rnrnrn求解.谢谢!rn
解决Flutter使用Column等容器包裹ListView报错的问题
报错如下所示: I/flutter ( 4625): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════ I/flutter ( 4625): The following assertion was thrown during performResi...
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池