關於以資料庫中兩結構相同表的同步(用觸發器)

2021-04-01 02:10:11 字數 3066 閱讀 5465

這是個人總結高人的程式寫的~

請問哪位高人能幫我指導,怎樣編寫個儲存過程來同步,本人在做畢業設計,希望

各位大哥的幫忙,也希望我這點程式能讓別人學多點的知識

if exists(select name from sysobjects where name='sale' and type='u')

drop table sale

goif exists(select name from sysobjects where name='newsale' and type='u')

drop table newsale

gocreate table [sale] (

[stor_id] [char] (4) collate chinese_prc_ci_as null ,

[ord_num] [varchar] (20) collate chinese_prc_ci_as null ,

[date] [datetime] null ,

[qty] [**allint] null ,

[payterms] [varchar] (12) collate chinese_prc_ci_as null ,

[title_id] [int] identity (1, 1) primary key not null

) on [primary]

gocreate table [newsale] (

[stor_id] [char] (4) collate chinese_prc_ci_as null ,

[ord_num] [varchar] (20) collate chinese_prc_ci_as null ,

[date] [datetime] null ,

[qty] [**allint] null ,

[payterms] [varchar] (12) collate chinese_prc_ci_as null ,

[title_id] [int] identity (1, 1) primary key not null

) on [primary]

go--我建立了兩個表,我希望在對sale表進行插入、更新、刪除操作時,

--將sale表中的記錄同步到表newsale於是我採用了為sale表新增觸發器,**如下

if exists(select name from sysobjects where name='sale_update' and type='tr')

drop trigger sale_update

goif exists(select name from sysobjects where name='sale_insert' and type='tr')

drop trigger sale_insert

goif exists(select name from sysobjects where name='sale_delete' and type='tr')

drop trigger sale_delete

go/*******************insert觸發器***************************/

create trigger sale_insert on dbo.sale

for insert

asset identity_insert newsale on

--delete  [dbo].[newsale]  where title_id   in (select title_id  from inserted)

insert   newsale(   

[stor_id],

[ord_num],

[date],

[qty] ,

[payterms],

[title_id]

)--select * from sale where [title_id] not in (select [title_id] from newsale)

select *  from inserted

--select *  from inserted

--delete  [dbo].[newsale]  where title_id   in (select title_id  from inserted)

set identity_insert newsale off

go/*******************delete觸發器***************************/

create trigger sale_delete on dbo.sale

for delete

asdelete  [dbo].[newsale]  where title_id  in (select title_id  from deleted)

go/*******************update觸發器***************************/

create trigger sale_update

on sale

for update

asset identity_insert newsale on

if  (update(stor_id)

or update(payterms)

or update(qty)

or update(date)

or update(ord_num))

begin

--select * from inserted

delete newsale where title_id in (select title_id from inserted)

insert   newsale(   

[stor_id],

[ord_num],

[date],

[qty] ,

[payterms],

[title_id]

)  select *  from inserted

--select * from sale

end

set identity_insert newsale off

go

關於餐飲無線點菜模組上傳PDA的資料庫結構說明

資料庫檔案資料結構 menu menuid 菜譜編號 0000 9999,其中0000為自點菜譜上沒有的菜 spellcode 拼音碼 dishname 菜名 unitid 計量單位 price 單價 iscurrentprice 是否時令價 kitchenerid 後廚 sortid 類別編號 c...

關於資料庫中的NULL

1 不能對null使用等號 2 不等對null相加 相乘 結果都是null 10倍的null仍舊是null 3 不要使用特殊標記 1 0 來代替null 4 null不是字串 null string 返回null 並不是string 5 not null 返回null 並不是true 6 null ...

在DevOps中以API看待共享資料庫

在winops 2017大會上,sabin.io首席顧問simon sabin做了一個演講,介紹如何將資料庫更改加入到持續部署模型中。從資料庫所有者的角度看,要實現在多個服務或應用間共享資料庫,關鍵之一就是將這些共享資料庫看成是api。sabin建議考慮使用檢視 觸發器和儲存過程等機制。它們可以更改...

關於資料庫中資料顯示在jsp中

通過呼叫getservletcontext 方法從容器獲得了servletconext,然後建立了一個map用於儲存資料,再將這個map放置到servletcontext中,在實際開發中,往往是把資料庫中的資料放置到servletcontext裡。儲存資料 public void contextin...

Oracle資料庫中刪除兩表中相同資料

問題提出 1 在做資料轉儲業務的時候,如果發生操作錯誤,有可能出現主表和副表中都有同一種資料,這樣結算的結果就有可能發生錯誤。實現方法 建表a create table a bm char 4 mc varchar2 20 插入a表資料 insert into a values 1111 1111 ...