1.首先sybase不支持级联删除,可通过触发器来实现级联删除功能。
SYBASE产生触发器的语法为:
CREATE TRIGGER 触发器名
ON 表名
FOR INSERT,UPDATE,DELETE
AS
SQL_statement |
FOR INSERT,UPDATE AS
IF UPDATE(column_name) [AND|OR UPDATE(column_name)]...
SQL_statements
上面FOR子句用来指定在触发器上的哪些数据更新命令可激活该 触发器。
IF UPDATE子句检查对指定列的操作类型,在IF UPDATE子句 中可指定多个列。
与ORACLE不同,对于每条SQL语句,触发器只执行一次。
触发器在数据更新语句完成以后立即执行。触发器和启动它的语句被当作一个事务处理,事务可以在触发器中回退。
2.多表删除效率问题。
配置很多表,参考配置集CONFIGUREID作为外键,进行级联删除。目前在sybase只能使用触发器实现级联删除。
触发器同时删除90多张表时,效率过低。
通过以下方式可以解决该问题:
A.建表时,请使用“primary key nonclustered”关键字来建立表主键。
如只写“primary key”,sybase默认以“primary key clustered”方式建立表主键,这样删除时,数据库移动数据较大,会造成删除效率低。
alter table NR8250_R_DRYCTOUT
add constraint P_NR8250_R_DRYCTOUT primary key nonclustered (MOI)
B.建表时,请同时在该表级联删除时,where条件查找中需要匹配的ID索引,可以提高查找效率。
具体请参考下面的例子。
if exists (select * from sysobjects where id = object_id ('DBO.NR8250_R_SHELF') and sysstat & 0xf = 3)
drop table DBO.NR8250_R_SHELF
go
create table NR8250_R_SHELF
(MOI varchar(200) not null
,NEID varchar(200) not null
,UCRACKNO numeric not null
,UCSHELFNO numeric not null
,UCSHELFTYPE numeric null
,CONFIGUREID varchar(200) not null
)
----创建非聚簇主键
alter table NR8250_R_SHELF
add constraint P_NR8250_R_SHELF primary key nonclustered (MOI,UCRACKNO,UCSHELFNO)
----创建索引
create index IDX1_NR8250_R_SHELF on NR8250_R_SHELF(CONFIGUREID)
-----取消外键级联删除定义
/*alter table NR8250_R_SHELF
add constraint F_NR8250_R_SHELF foreign key (CONFIGUREID)
references NR8250_R_CONFIGURESET (CONFIGUREID) --on delete cascade*/
go
-------创建配置集以下表与配置集表的级联删除触发器
if exists(select * from sysobjects where name='TRG_DELETE_NR8250V1_CONFIGSET' and type='TR')
begin
drop trigger TRG_DELETE_NR8250V1_CONFIGSET
end
create trigger TRG_DELETE_NR8250V1_CONFIGSET
on NR8250_R_CONFIGURESET for delete
as
begin
---------多表级联删除
delete NR8250_R_RACK from deleted as d where NR8250_R_RACK.CONFIGUREID=d.CONFIGUREID
delete NR8250_R_SHELF from deleted as d where NR8250_R_SHELF.CONFIGUREID=d.CONFIGUREID
delete NR8250_R_BOARD from deleted as d where NR8250_R_BOARD.CONFIGUREID=d.CONFIGUREID
delete NR8250_R_SNTP from deleted as d where NR8250_R_SNTP.CONFIGUREID=d.CONFIGUREID
end
3.计算sql语句在sybase中的执行效率,
请在sql语句前后,增加SELECT CONVERT(VARCHAR(30),GETDATE(),109)语句,从前后时间差判定当前语句的执行效率。
SELECT CONVERT(VARCHAR(30),GETDATE(),109)
alter table NR8250_R_SHELF
add constraint P_NR8250_R_SHELF primary key nonclustered (MOI,UCRACKNO,UCSHELFNO)
SELECT CONVERT(VARCHAR(30),GETDATE(),109)
if exists (select * from sysobjects where id = object_id ('DBO.NR8250_R_SHELF') and sysstat & 0xf = 3)
drop table DBO.NR8250_R_SHELF
go
create table NR8250_R_SHELF
(MOI varchar(200) not null
,NEID varchar(200) not null
,UCRACKNO numeric not null
,UCSHELFNO numeric not null
,UCSHELFTYPE numeric null
,CONFIGUREID varchar(200) not null
)
----创建非聚簇主键
alter table NR8250_R_SHELF
add constraint P_NR8250_R_SHELF primary key nonclustered (MOI,UCRACKNO,UCSHELFNO)
----创建索引
create index IDX1_NR8250_R_SHELF on NR8250_R_SHELF(CONFIGUREID)
-----取消外键级联删除定义
/*alter table NR8250_R_SHELF
add constraint F_NR8250_R_SHELF foreign key (CONFIGUREID)
references NR8250_R_CONFIGURESET (CONFIGUREID) --on delete cascade*/
go
if exists (select * from sysobjects where id = object_id ('DBO.NR8250_R_RACK') and sysstat & 0xf = 3)
drop table DBO.NR8250_R_RACK
go
create table NR8250_R_RACK
(MOI varchar(200) not null
,NEID varchar(200) not null
,UCRACKNO numeric not null
,UCRACKTYPE numeric null
,ACRACKNAME varchar(200) null
,DWTANKNO numeric null
,DWRESERVED numeric null
,CONFIGUREID varchar(200) not null
)
alter table NR8250_R_RACK
add constraint P_NR8250_R_RACK primary key nonclustered (MOI,UCRACKNO)
create index IDX1_NR8250_R_RACK on NR8250_R_RACK(CONFIGUREID)
/*alter table NR8250_R_RACK
add constraint F_NR8250_R_RACK foreign key (CONFIGUREID)
references NR8250_R_CONFIGURESET (CONFIGUREID) --on delete cascade*/
go
if exists (select * from sysobjects where id = object_id ('DBO.NR8250_R_BOARD') and sysstat & 0xf = 3)
drop table DBO.NR8250_R_BOARD
go
create table NR8250_R_BOARD
(MOI varchar(200) not null
,NEID varchar(200) not null
,UCRACKNO numeric not null
,UCSHELFNO numeric not null
,UCSLOTNO numeric not null
,WBOARDTYPE numeric null
,UCPOWERCTRL numeric null
,UCMODE numeric null
--,DWRADIOMODE numeric null --NR8250 V2.00, BY QIUHUA 2012-03-05
--,DWFUNCSET numeric null --NR8250 V2.00, BY QIUHUA 2012-03-05
,DWRESV1 numeric null
,DWRESV2 numeric null
,DWRESV3 numeric null
,DWRESV4 numeric null
,DWRESV5 numeric null
,DWRESV6 numeric null
,DWRESV7 numeric null
,DWRESV8 numeric null
,DWRESV9 numeric null
,DWRESV10 numeric null
,DWMANUALOP numeric null
,DWSTATUS numeric null
,CONFIGUREID varchar(200) not null
)
alter table NR8250_R_BOARD
add constraint P_NR8250_R_BOARD primary key nonclustered (MOI,UCRACKNO,UCSHELFNO,UCSLOTNO)
create index IDX1_NR8250_R_BOARD on NR8250_R_BOARD(CONFIGUREID)
/*alter table NR8250_R_BOARD
add constraint F_NR8250_R_BOARD foreign key (CONFIGUREID)
references NR8250_R_CONFIGURESET (CONFIGUREID) --on delete cascade*/
go
-------创建配置集以下表与配置集表的级联删除触发器
if exists(select * from sysobjects where name='TRG_DELETE_NR8250V1_CONFIGSET' and type='TR')
begin
drop trigger TRG_DELETE_NR8250V1_CONFIGSET
end
create trigger TRG_DELETE_NR8250V1_CONFIGSET
on NR8250_R_CONFIGURESET for delete
as
begin
delete NR8250_R_RACK from deleted as d where NR8250_R_RACK.CONFIGUREID=d.CONFIGUREID
delete NR8250_R_SHELF from deleted as d where NR8250_R_SHELF.CONFIGUREID=d.CONFIGUREID
delete NR8250_R_BOARD from deleted as d where NR8250_R_BOARD.CONFIGUREID=d.CONFIGUREID
end
分享到:
相关推荐
3. Sybase数据库用户登录:用户需在数据库级别验证。 4. 数据库对象授权:用户需对特定数据库对象具有访问权限。 二、数据库角色 角色是权限的集合,有助于简化权限管理和分配。SQL Server提供了三种系统预定义角色...
同时,学生需要了解数据库参照完整性、级联删除等概念。 在实验中,学生还需要学习存储过程的创建和执行、触发器的建立和使用、数据库安全性控制、创建新用户、用户权限管理等内容。 实验报告的格式要求严格,需要...
jtds是一个开放源代码的Java驱动程序,支持与Microsoft SQL Server和Sybase ASE数据库的连接。在Android项目中,我们可以通过添加jtds的jar包来实现对远程SQL Server的访问。 1. **集成jtds** 首先,你需要将jtds...
10. 级联参考完整性约束:在删除或更新带有外键约束的数据时提供更细粒度的控制。 SQL Server 2000的这些特性显著提升了数据库的灵活性、可扩展性和性能,使得它成为当时企业和开发者的首选数据库解决方案之一。...
- **级联更新/删除**:当更新或删除父表记录时,自动更新或删除子表中的相关记录。 **3. 域完整性** - **数据验证**:设置字段级别的约束条件,如非空、唯一性等。 - **默认值**:为字段设定合理的默认值。 #### ...
数据库本身是存储特定主题数据的地方,它支持与数据相关的活动,如查询、更新和删除。事务是保证数据一致性的关键,通过事务,可以确保一组数据库操作要么全部成功,要么全部回滚,从而避免数据不一致。规则、默认值...
10. **级联参考完整性约束**:在删除或更新涉及外键的数据时提供控制,确保数据一致性。 总结来说,SQL Server 2000作为一款强大的数据库管理系统,不仅提供了丰富的版本选择以适应各种业务场景,还通过引入诸多...
14. Adaptive Server Anywhere是SYBASE提供的轻量级、高性能SQL数据库,可作为单机或服务器运行。 15. 事务是操作系统中逻辑工作单元,可以是一系列操作的集合。 16. 数据清理是数据仓库构建过程中的重要步骤,...
10. 级联参考完整性约束:控制外键约束下的删除和更新操作。 这些特性使得SQL Server 2000成为了一个强大且灵活的数据库解决方案,不仅能满足不同规模组织的需求,还提供了丰富的工具和功能来优化数据管理和应用...
10. 级联引用完整性约束:在删除或更新时控制外键约束的行为。 11. Collation增强:用Collation替代Code pages和Sort Orders,提供更灵活的字符集和排序规则。 这些特性使得SQL Server 2000成为一个强大且灵活的...
GoldenGate以其对数据的实时捕获和传输能力而广受欢迎,它支持多种操作系统平台和数据库系统,如Windows、Linux、AIX、HP-UNIX以及Oracle、MySQL、Sybase、DB2、SQL Server等。 在复制模式方面,GoldenGate提供了...
- 大型数据库:如Sybase、Oracle、DB2等,适合超大型项目,数据量可超过几个TB甚至更多。其中,Sybase的数据处理能力略低于Oracle和DB2,但Oracle在性能方面优于DB2。 - **选择数据库的考虑因素**: - **业务模型...
10. 级联参考完整性:确保了数据的完整性和一致性,当更新或删除一行时,关联的数据会自动更新或删除。 这些特性使得SQL Server 2000成为一个强大而灵活的数据库管理系统,广泛应用于企业的数据存储和管理,为业务...
10. 在数据窗口画板中,如果想统一调整从数据库中检索出的数据的字体,可以从“Edit”菜单中选择“Select”菜单项,在系统弹出的级联菜单中,选 Select All 菜单项。 11. 要删除对象级结构,需在 pbl 库管理器中...
13.3.3 SYBASE 207 13.3.4 DB2 207 13.3.5 SQL Server 207 13.4 SQL语言简介 207 13.5 常见的数据库设计问题 208 13.6 关系型数据库的设计原则 209 13.6.1 第一范式(1NF) 209 13.6.2 第二范式(2NF) 209 13.6.3 ...