只能设定字段不为负数,但是要变为0就难了。
用check的话如下:
alter
table
表名
add
constraint
约束名
check
(字段>0)
用触发器的话
create
trigger
a_num
on
表名
instead
of
insert
as
begin
declare
@列1
数据类型1,@列2
数据类型2,列3
数据类型3...
select
@列1
=
列1,@列2=列2,@列3
=
列3...
from
inserted
if
@列1<0
set
@列1
=
0
else
set
@列1
=@列1
insert
into
表名(列1,列2,列3...)
values
(@列1,@列2,@列3...)
end
这里我假设你列是要大于等于0,小于0的时候自动变为0的
第一个分隔符若为and之类的关键字,注意俩边要有空格。注意这个函数不能跳过空的字符串,只能跳过null,所以如果里面的字符串项中若有判断语句,一定不要把字符串赋值为空。
if exists(select * from sysobjects where name='tg_update_a')drop trigger tg_update_a
go
create trigger tg_update_a
on 你的表名 -- 改成你的表名
for update
as
declare @id int --把id改成你这个表里的标识列的列名,如果类型不一样的话,把int类型也改一下。。
select @id = id from inserted
if((select a from inserted where id = @id)<0)
update cardinfo set a=0 where id = @id
--where里的id不要的话,就是把你a字段内的每一行数据都更改成0.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)