是这样一个逻辑将某表所有ID为'a'的数据的STATUS字段改为“停用”(update table_a set status='停用' where id='a')之后另一张表是用来记录日志的LOG表就是说 刚才table_a里update了多少行日志LOG表就要插入多少行相关的数据SQL应该怎么写?
解决方案 »
- 如何更新多个用户数据库时系统不死机
- 如何在gridview中修改控件是否可用,要在后台修改???????、
- 再开一帖问个奇怪的问题,请各位帮忙
- .net 生成本地化 问题!
- 头痛死我了.
- 我有多人共同倒计时,结束时同时读取一个表的字段,并更改,怎样做到一个个的改,而不发生违反并发性: UpdateCommand 影响了预期 1 条记录中的 0 条。
- <%# DataBinder.Eval 的问题
- 各位大人,小弟刚学asp.net有一事相求?
- 这个问题我在传智播客问了N次,没能解决,看看这里有没有人帮我解决
- HELP!
- 如何把数据库里面的数据放到表格里,以这样的形式显示?
- JS调用IE打印设置横纵向问题
Insert Table2 (aaa) Values( @@ROWCOUNT)
DELIMITER |
CREATE TRIGGER `<databaseName>`.`<triggerName>`
< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >
ON <tableName>//这里是你的更新语句
FOR EACH ROW
BEGIN
--do something//这里写你的insert语句
END |
update table_a set status='停用' where id='a'
insert into table_Log values (@@rowcount)
-- =============================================================================
-- 標題: 觸發器Trigger、inserted | update表的應用
-- 目的: 利用Trigger做日志,當A表的內容有變化時,B表會記錄下這些變化.
-- 原創: takako_mu
-- 时间: 2009-10-19
-- 地点: 昆山
-- =============================================================================
if not object_id('TempA') is null drop table TempA
create table TempA(uid int identity(1,1) not null primary key,department nvarchar(10),uname nvarchar(15))
if not object_id('TempB') is null drop table TempB
create table TempB(uid int identity(1,1) not null primary key,old_department nvarchar(10),
new_department nvarchar(10),old_uname nvarchar(15),new_uname nvarchar(15),uaction nvarchar(10),actionDate datetime)
goif object_id('Tri_Test')is not null drop trigger Tri_Test
go
create trigger Tri_Test on TempA
for insert,update
as
if not exists(select 1 from deleted)
insert TempB select null,department,null,uname,'Insert',getdate() from inserted
else
begin
declare @department nvarchar(10),@uname nvarchar(15)
select @department=department,@uname=uname from deleted
insert TempB select @department,department,@uname,uname,'Update',getdate() from inserted
end
go--測試一
--先插入一筆資料進TempA,看看TempB有什么變化.
insert into TempA select 'IT-SCM','Takako'
go
select * from TempA
select * from TempB
/**//*
(1 個資料列受到影響)(1 個資料列受到影響)
uid department uname
----------- ---------- ---------------
1 IT-SCM Takako(1 個資料列受到影響)uid old_department new_department old_uname new_uname uaction actionDate
----------- -------------- -------------- --------------- --------------- ---------- -----------------------
1 NULL IT-SCM NULL Takako Insert 2009-10-19 09:03:15.210(1 個資料列受到影響)
*/
--測試二
--對TempA的一筆資料做update動作,看看TempB會有什么變化.
update TempA set department='IT-ERP',uname='Snoopy'
select * from TempA
select * from TempB
/**//*
(1 個資料列受到影響)(1 個資料列受到影響)
uid department uname
----------- ---------- ---------------
1 IT-ERP Snoopy(1 個資料列受到影響)uid old_department new_department old_uname new_uname uaction actionDate
----------- -------------- -------------- --------------- --------------- ---------- -----------------------
1 NULL IT-SCM NULL Takako Insert 2009-10-19 08:49:33.233
2 IT-SCM IT-ERP Takako Snoopy Update 2009-10-19 08:49:38.737(2 個資料列受到影響)
*/
update table_a set status='停用' where id='a'
insert into table_Log values (@@rowcount)
@@rowcount是什么呢
insert into tb_log
select 字段... from table_a where id='a'
再更新
update table_a set status='停用' where id='a'
cmd1=update table_a set status='停用' where id='a'
SqlCommand cmd = new SqlCommand(cmd1,con);
cmd.Connection = con;
cmd.ExecuteNonQuery(); 这个返回影响行!
那对LOG表的插入要怎么做呢?