比如我要限制整个表只能容纳100条记录.
然后如果我想改变其容量了,再设置为比如200条记录为上限.
麻烦了.谢谢
然后如果我想改变其容量了,再设置为比如200条记录为上限.
麻烦了.谢谢
解决方案 »
- 这句为什么出错:backup database catv to disk='C:\catv.bak'(详请进)
- MS SQL中如何判断,例如,字符'FLEX'是否存在于表EMPLOYER的NAME字段中?
- 求助一条存储过程!恳请赐教!!!
- 请看asp连接access数据库的两种方法哪个好,asp怎样与SQL Server连接?
- 为什么有用"LIKE"的存储过程不起作用
- 触发器问题,不正常,请教.
- sql存储过程是不是对数据类型有什么特别操作啊?我已经问过一次了。
- 在pb6.5中怎样和sql server 6.5中的数据库连接?急急急!!!
- 誰能給我一些數據?
- 一个SQL存储过程问题和一个表连接查询问题
- SQL Sever2000中的尖端问题
- 请帮我看下这段代码,用asp对mssql操作的
2、check约束(函数)
create table # (id int identity, data char(1), check(id<3))
insert # select 'a'
insert # select 'b'select * from #
insert # select 'c' -->不能再插入数据
如果想通过应用程序来传200这个参数该怎么做呢?因为我想把它改变为200条上限了,就比如VC+MS SQL2000吧.
请各位指点.,谢谢
每次写入之前,count(*)一下数据库里面的值,
然后给你这个固定的值比如说100做比较,
如果count(*)<100则写入,
反之,则提示用户超过限制!
@pid int,
@pname nvarchar(20),
@plimitcount int
as
begin
declare @i int
select @i = count(*) from tb
if @i<@plimitcount
begin
insert into tb ....
endend
CREATE trigger T_PlayersNum
before insert on Players for each row
begin
If (Select Count(distinct playerid) From Players) >200
Raiserror('不能超过200个',16,-1)
RollBack Tran
Return
End if
End 这样对吗?
CREATE proc test11(@costNum int, @tableName varchar(20))
as
SET nocount ON
DECLARE @num int
DECLARE @str nvarchar(200)SET @str='select @num=count(*) from '+@tableName
exec sp_executesql @str,
N'@num int out',
@num out
IF @num<=@costNum
RETURN 0
ELSE
RETURN 1
go
--插入之前调用
DECLARE @s int
EXEC @s=test11 10,'表名'--对"表名"的表限定10条
SELECT @s
--返回1就不能插了,不过有可能会一次性插入多条时超过限定记录数
CREATE trigger T_PlayersNum
before insert on Players for each row
begin
If (Select playerid From Players) >200 then
Raiserror('不能超过200个',16,-1);
End if;
End$$MYSQL中这样写就可以了吧.
如果作一个表来存这个200
那触发器中就可以if (select playerid from Players)>(select 值 from 表) 这样来比较
以后改200为100 或400只要改表中的值,而无需动触发器
before insert on Players for each row
begin
If (Select Count(distinct playerid) From Players) >=3 then
Raiserror('不能超过3个',16,-1);
RollBack Transaction;
Return;
End if;
End;
这样吗?我实在是找不到标准的 特别是Raiserror('不能超过3个',16,-1);请各位再指点一下 麻烦了
@pid int,
@pname nvarchar(20),
@plimitcount int
as
begin
declare @i int
select @i = count(*) from tb
if @i<@plimitcount
begin
insert into tb ....
endend
这个就可以
CREATE trigger T_PlayersNum
before insert on Players for each row
begin
If (Select Count(distinct accountnum) From Players) >=3 then
Raiserror('不能超过3个',16,-1);
RollBack Transaction;
Return;
End if;
End;//
delimiter ; 请问我这个触发器问题在哪里 每次执行到Raiserror('不能超过3个',16,-1);就出错.
If (Select Count(distinct accountnum) From Players) >=3 then
Raiserror('不能超过3个',16,-1);
RollBack Transaction;
Return;
End if;
该怎么写才行,我要急死了
这边是SQL SERVER.........