0

例如,

create table t1 ( a int, b text )
create table t2 ( a int, b text )

insert t1 values ( 0, 'abcde' )

当我删除 t1 行时,我希望它在 t2 中移动。如果可以帮助您理解,也许我们可以将 t2 命名为 t1_hist。

很容易想出一个删除触发器的想法。像这样:

create trigger t1_d on t1
for delete
as begin
  insert t2(a,b) select a,b from deleted
end

但是当删除 t1 时,我从 Sybase 得到了这个:文本指针值 0x0b06000000000000010000002d51f903 引用了一个不再分配的数据页。此文本指针引用属于对象 ID 8 的第一个文本页 1547。

有没有其他想法可以做到这一点?我不想添加另一个表,就像 t1 的镜像/阴影一样,触发器可以从该表中选择值然后删除。

--

-- Adaptive Server 企业版/15.5

4

2 回答 2

0

try this without triggers assuming table have same structure

  delete from table1
OUTPUT deleted.*  INTO table2(id,A)
where column=<some_value>
于 2013-11-12T06:56:45.063 回答
0

以下是我们如何在我们的网站上实现它:

create trigger TABLE1_DEL
on TABLE1
for delete
as
BEGIN 
insert into DBNAME..TABLE2
    select * from TABLE1
END

当 Trigger 编译时,ASE 会扩展 的所有元素,*如下所示:

select deleted.COL_1, deleted.COL_2, deleted.TEXT_COL
from deleted

希望有帮助。

于 2013-11-13T14:22:07.537 回答