问一个SQL和ASP.NET的问题

changzaixin 2008-11-29 09:45:34
有一个表,如果我对其插入数据后,检索它的条数达到50条以上,就更新另一个表中的一个字段为1;相反,如果我删除数据后,发现它的条数少于50,要将改掉的字段再改为0,怎么建一个触发器,然后怎么在ASP.NET的程序中调用?
谢谢,帮忙解答一下。
...全文
91 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengxj85 2008-11-29
  • 打赏
  • 举报
回复
Mark
lxl_sprots 2008-11-29
  • 打赏
  • 举报
回复
刚才忘了写删除了 把这个加上 就可以了。。。

CREATE TRIGGER [trigger1] ON [dbo].[Table2]
FOR DELETE
AS
declare @aa int
begin
select @aa=count (*) from table2
if(@aa>10)
begin
update table1 set uid='1'
end
if(@aa<=10)
begin
update table1 set uid='0'
end
end


lxl_sprots 2008-11-29
  • 打赏
  • 举报
回复
触发器为:

CREATE TRIGGER [trigger] ON dbo.Table2
FOR INSERT
AS
declare @aa int
begin
select @aa=count (*) from table2
if(@aa>10)
begin
update table1 set uid='1'
end
if(@aa<=10)
begin
update table1 set uid='0'
end
end


测试表tabl1为

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Table1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Table1]
GO

CREATE TABLE [dbo].[Table1] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[uid] [int] NULL
) ON [PRIMARY]
GO


测试表table2为

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Table2]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Table2]
GO

CREATE TABLE [dbo].[Table2] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO


然后你给Table2 里面插入数据 插入11条就可以了 改变了。。。你试试。。。
  • 打赏
  • 举报
回复
case when (select(*) from [yourTable])>1 then

应该写为

case when (select(*) from [yourTable])>50 then
  • 打赏
  • 举报
回复
我有很多年没有用过SQL Server了,我给你写一个不保证语法正确的触发器(但是思路正确),供参考:

Create trigger trigger20081129a on [yourTable] after insert,delete as
update [AnotherTable] set field_1= case when (select(*) from [yourTable])>1 then 1 else 0 end where name='abc'
--trigger end

最后的where部分,你应该自己修改一下,你总是要到“另外一个表中”定位到具体的记录,然后才修改其字段的吧。
changzaixin 2008-11-29
  • 打赏
  • 举报
回复
好的 会了 谢谢
changzaixin 2008-11-29
  • 打赏
  • 举报
回复
必须要写触发器的 要求用触发器实现
Fibona 2008-11-29
  • 打赏
  • 举报
回复
当你对触发器表做DML操作时触发器自动调用,不象存储过程,想用的时候再调用

触发器不用调用的,当一个操作会引发触发器运作时它就自动运作,程序不用干涉的,如果你想程序来做相同的事情,那就写相应的sql语句,或者存储过程,

然后在程序代码里面调用,

这样的情况你直接使用一个事务,写上插入,获取,更新的语句不就完事了'
孤独侠客123 2008-11-29
  • 打赏
  • 举报
回复
写两个触发器.看一下教程吧
http://www.cnblogs.com/xfan/archive/2006/01/23/321952.html
zhxingway 2008-11-29
  • 打赏
  • 举报
回复
Create Trigger Trigger_name
{Before|After} {Insert|Update|Delete}
on Talbe_name
For Each {Row|Statement}
<触发动作体>

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧