SQL Server 2000中怎么使用update 触发器更改当前的字段?
在SQLServer2000中想写个触发器,表格如下:createtableCurrentAccount(accountNumnvarchar(255)primaryke...
在SQL Server 2000中想写个触发器,表格如下:
create table CurrentAccount
(
accountNum nvarchar(255) primary key,
custName nvarchar(255),
apassword nvarchar(255),
money1 int,
state1 nvarchar(255)
)
功能是当插入表中前4个字段,比如:
insert into CurrentAccount values('334','334','334',890,'')
之后,在state1列会自动更新为:等待审核
我写的触发器是:create trigger CurrentAccount_insert1
on CurrentAccount
after insert
update CurrentAccount
set state1 = '等待审核'
这个触发器它会把我表中所有行的state1都改为:等待审核,找不是我想实现的功能,我想只把我当前插入的数据的那一行的state1改为:等待审核。
急!望那位高手帮忙解决,还有不知道SQL Server 2000支不支持用new 和old?
小弟的没有多少,全部分就这些,谢了! 展开
create table CurrentAccount
(
accountNum nvarchar(255) primary key,
custName nvarchar(255),
apassword nvarchar(255),
money1 int,
state1 nvarchar(255)
)
功能是当插入表中前4个字段,比如:
insert into CurrentAccount values('334','334','334',890,'')
之后,在state1列会自动更新为:等待审核
我写的触发器是:create trigger CurrentAccount_insert1
on CurrentAccount
after insert
update CurrentAccount
set state1 = '等待审核'
这个触发器它会把我表中所有行的state1都改为:等待审核,找不是我想实现的功能,我想只把我当前插入的数据的那一行的state1改为:等待审核。
急!望那位高手帮忙解决,还有不知道SQL Server 2000支不支持用new 和old?
小弟的没有多少,全部分就这些,谢了! 展开
展开全部
如果你只希望为新插入的记录的state1 填上'等待审核'的话,根本用不着触发器。
直接将state1 的默认值设置为'等待审核'就行了,这样效率高。
create table CurrentAccount
(
accountNum nvarchar(255) primary key,
custName nvarchar(255),
apassword nvarchar(255),
money1 int,
state1 nvarchar(255) DEFAULT('等待审核')
)
或者,在insert into 语句中显示的插入等待审核
insert into CurrentAccount values('334','334','334',890,'等待审核')
如果你非要用触发器的话,就在update语句后面加上where 子句
update CurrentAccount
set state1 = '等待审核' from CurrentAccount as c, inserted as i where c.accountNum = i.accountNum
直接将state1 的默认值设置为'等待审核'就行了,这样效率高。
create table CurrentAccount
(
accountNum nvarchar(255) primary key,
custName nvarchar(255),
apassword nvarchar(255),
money1 int,
state1 nvarchar(255) DEFAULT('等待审核')
)
或者,在insert into 语句中显示的插入等待审核
insert into CurrentAccount values('334','334','334',890,'等待审核')
如果你非要用触发器的话,就在update语句后面加上where 子句
update CurrentAccount
set state1 = '等待审核' from CurrentAccount as c, inserted as i where c.accountNum = i.accountNum
展开全部
触发器在这里就是浪费性能:完全可以用默认值代替...
CREATE TABLE test(a INT,b VARCHAR(100))
--增加default约束
ALTER TABLE test ADD CONSTRAINT DF_b DEFAULT '待审核' FOR b
--测试
INSERT test(a) SELECT 1 UNION ALL SELECT 2
SELECT * FROM test
/*
a b
---- ------
1 待审核
2 待审核
*/
CREATE TABLE test(a INT,b VARCHAR(100))
--增加default约束
ALTER TABLE test ADD CONSTRAINT DF_b DEFAULT '待审核' FOR b
--测试
INSERT test(a) SELECT 1 UNION ALL SELECT 2
SELECT * FROM test
/*
a b
---- ------
1 待审核
2 待审核
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
CREATE trigger CurrentAccount_insert1 on CurrentAccount
After INSERT, UPDATE
AS
if update(state1) return
update CurrentAccount set state1 = '等待审核'
where accountNum in (select accountNum from Inserted)
After INSERT, UPDATE
AS
if update(state1) return
update CurrentAccount set state1 = '等待审核'
where accountNum in (select accountNum from Inserted)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询