修改informix数据库表的主键,需要首先删除主键,再新建。
第一步:
查出该主键的约束的名字,查约束名SQL语句如下(TabName为表名):
SELECT constrname FROM sysconstraints
WHERE tabid = (SELECT tabid FROM systables
WHERE tabname = ‘TabName’) and constrtype ='P' ;
{
constrtype ='P' 是主键约束,还有
C 检查(Check)
R 引用(外键)(Reference,Foreign Key)
U 唯一 *** (Unique)
N 非空(Not Null)
}
第二步:
删除主键(TabName为表名,u144_58为上一步查出的约束名),SQL语句如下:
alter table TabName drop constraint u144_58;
第三步:
新建主键(主键为policyno,classcode,loandate),SQL语句如下:
>>
ALTER TABLE TabName
ADD CONSTRAINT PRIMARY KEY (policyno,classcode,loandate)
CONSTRAINT u144_58;
{u144_58约束名可自定,必需唯一}
由于整个修改主键过程无法纯用SQL脚本完成,特写了一个SHELL脚本。
修改数据库主键 SHELL 脚本,需要informix的dbaccess支持:
#!/bin/sh
#################################################
#功能: informix 修改数据库主键
#################################################
chg_primary_key()
{
if [ $# -ne 2 ];then
echo "<ERROR> Uargs: chg_primary_key tableName primaryKey \n[$*]"
exit 1
fi
_tableName="$1"
_primaryKey="$2"
alias dbaccess='dbaccess'
#查出老的主键约束名
_constrName=`dbaccess remotedb 2>> tmp.txt << EOF | xargs | cut -d ' ' -f2
select constrname from sysconstraints where constrtype='P'
and tabid= ( select tabid from systables where tabname = '$_tableName' ) ;
EOF `
if [ -z "$_constrName" ] || [ "$_constrName" = "constrname" ];then
echo "<ERROR>主键名查出为空!"
exit 1
fi
#修改主键
dbaccess remotedb << EOF
alter table $_tableName drop constraint $_constrName;
alter table $_tableName add constraint
primary key ($_primaryKey) constraint $_constrName;
EOF
}
#debitrec修改主键为(policyno,classcode,loandate)
chg_primary_key debitrec policyno,classcode,loandate
#borrapp修改主键为(id,policyno,classcode,bdate)
chg_primary_key borrapp id,policyno,classcode,bdate
#quittask修改主键为(taskid,policyno,classcode)
chg_primary_key quittask taskid,policyno,classcode
来自: http://hi.baidu.com/yanweinet/blog/item/42deec58fc3743d89c8204b1.html
分享到:
相关推荐
【Informix数据库与SQL简介】 Informix是一款由IBM公司开发的关系型数据库管理系统(RDBMS),以其高效能、高可用性和灵活性而广受业界好评。它支持多种操作系统平台,包括Unix、Linux、Windows等,适用于各种规模...
IBM Informix SQL 参考指南是一本详尽的资料,旨在帮助用户深入理解和熟练运用IBM Informix数据库管理系统中的SQL(结构化查询语言)语法。Informix是一个高效、可靠的数据库解决方案,广泛应用于各种业务环境,包括...
3. **表的设计与操作**:讨论如何设计符合规范化原则的表结构,包括字段定义、数据类型选择、主键和外键的概念,以及如何创建、修改和删除表。 4. **索引与查询优化**:介绍索引的作用,如何创建和管理B树索引,...
文件“ims(不支持序列).sql”和“ims(支持序列).sql”显然涉及到Informix数据库的表结构创建,其中的区别在于是否使用序列(sequence)功能。序列在数据库中用于生成唯一的整数,常用于自动增长的主键字段。不...
例如,你可以使用SQL创建、修改和删除数据库结构(如表、视图、索引等)。在安全性方面,SQL支持用户权限管理,确保只有授权的用户才能访问特定数据。至于事务,它们是数据库操作的逻辑单元,确保数据一致性,即使在...
2. **数据表管理**:创建、修改和删除表结构,包括添加、修改和删除字段,设置主键和外键约束。 3. **数据操作**:插入、更新和删除数据,以及批量操作数据的方法。 **四、SQL查询与优化** 1. **SELECT语句**:...
12. **高级特性**:如分区表、物化视图、并行查询、复制和备份恢复等,这些特性进一步增强了Informix数据库的性能和可用性。 通过深入学习《Informix SQL手册》,不仅可以掌握Informix SQL的基本操作,还能了解其...
《Informix SQL参考指南 V9.4》是Informix数据库管理系统的一个重要参考资料,它详尽地阐述了在Informix环境中如何使用SQL(结构化查询语言)进行数据操作、查询、管理以及开发工作。该指南主要面向数据库管理员、...
Informix SQL是Informix数据库系统与用户进行交互的主要工具,它允许用户创建、查询、更新和管理数据库中的信息。 1. **SQL基础**:SQL是一种标准化的编程语言,用于管理和处理关系数据库。在Informix中,SQL用于...
- 表的创建与管理:学习如何定义表结构,包括字段、主键、外键等,以及如何进行表的操作,如创建、修改和删除。 4. **SQL 语言在 Informix 中的应用** - SQL 基础:掌握 SQL 的基本语法,如 SELECT、INSERT、...
6. **表的创建与操作**:创建表需要定义列名、数据类型、主键和约束。熟悉SQL的DML(Data Manipulation Language)语句,如INSERT、UPDATE、DELETE,用于插入、修改和删除数据。 7. **事务处理**:Informix支持ACID...
12,另外支持数据表,存储过程,数据管道(可以支持不同的数据库之间相同表结构的数据进行传输)等功能,表结构修改,增加索引主键等,修改保存存储过程。 最后,该软件是我自己编写的,很小,打开速度快,支持两种...
- **创建表**:通过CREATE TABLE语句定义表结构,包括字段名、数据类型、约束条件(如主键、唯一性约束、非空约束等)。 2. **数据插入与更新** - **INSERT语句**:用于向表中插入新记录,可以插入单行或多行数据...
Oracle数据库是目前广泛应用的关系型数据库管理系统(RDBMS),它支持SQL语言,允许用户执行数据查询、插入、删除、更新以及创建和修改数据库结构。Oracle提供了丰富的功能,包括事务处理、并发控制、恢复机制、安全...
这一模型以其简洁性和强大的理论基础,在数据库领域占据主导地位,被广泛应用于ORACLE、SYBASE、INFORMIX、IBM DB2等知名数据库系统中。 关系数据模型的核心是关系,它表现为二维表格形式,包含了行和列。每一列的...
自1981年IBM推出SQL以来,由于其简洁的语法、强大的功能以及易学性,它迅速在各种数据库管理系统中得到广泛应用,无论大型如Oracle、Sybase、Informix、SQL Server,还是小型如Visual FoxPro、PowerBuilder,都支持...
在Oracle 10g中,用户可以使用SQL来查询、插入、更新和删除数据,创建和修改表结构,以及管理数据库权限。 **触发器** 触发器是数据库中的一种特殊类型的存储过程,会在特定的DML(数据操纵语言)操作(如INSERT、...
在关系数据库中,数据组织成一系列的表,每个表都有一个主键,用于唯一标识记录。表与表之间的联系可以通过主键建立,实现数据的关联和联动。例如,一个会员管理系统可能包含会员表,记录会员的基本信息,如会员号、...
表是关系数据库的基本单元,每个表通常都有一个主键,用于唯一标识表中的记录。通过主键,不同表之间可以建立一对一、一对多或多对多的关联,实现数据的关联查询和操作。这种结构使得在查询和分析大量数据时更加高效...