4
A
回答
6
一些事情,你可以使用AFTER
触发UPDATE/INSERT
:
CREATE TABLE tab(col NVARCHAR(100));
CREATE TRIGGER trg_tab
ON tab
AFTER INSERT, UPDATE
AS
IF (SELECT COUNT(*) FROM tab WHERE col = 'username') > 10
ROLLBACK;
INSERT INTO tab(col)
VALUES ('username'), ('username'), ('username'), ('username'),
('username'), ('username'), ('username'), ('username'),
('username'),('username');
INSERT INTO tab(col)
VALUES ('username');
/* The transaction ended in the trigger. The batch has been aborted. */
或者使用SCALAR FUNCTION
和CHECK
约束:
CREATE TABLE tab(col NVARCHAR(100));
CREATE FUNCTION dbo.CheckFunction()
RETURNS INT
AS
BEGIN
RETURN (SELECT COUNT(*) FROM tab WHERE col = 'username')
END;
ALTER TABLE tab
ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFunction() <= 10);
INSERT INTO tab(col)
VALUES ('username'), ('username'), ('username'), ('username'),
('username'), ('username'), ('username'), ('username'),
('username'),('username');
INSERT INTO tab(col)
VALUES ('username');
/* The INSERT statement conflicted with the CHECK constraint "chkRowCount".
The conflict occurred in database "db_6_34d5e", table "dbo.tab". */
2
在表上创建一个AFTER INSERT
触发器。这样
create trigger LimitTable
on YourTableToLimit
after insert
as
declare @tableCount int
select @tableCount = Count(*)
from YourTableToLimit
if @tableCount > 50
begin
rollback
end
go
相关问题
- 1. 只允许一个查询字符串
- 2. 只允许输入一个字符的实例C#
- 3. 只允许用户名字母
- 4. 只允许登录网站的用户的一个实例
- 5. 只允许一个页面的实例
- 6. 只允许8个字符
- 7. 只允许EditText中的字符串
- 8. 限制名称末尾只有一个连字符用户名
- 9. 只允许一个python脚本实例?
- 10. 允许AWS IAM用户只启动一个ec2实例
- 11. 只允许字符串中的某个字符。 Javascript
- 12. 只允许7个字母数字字符,但无限空间
- 13. 只允许数字字符
- 14. 允许并限制一些HTML字符
- 15. Power BI Admin连接字符串只允许500个字符?
- 16. 强制JTextField字符串值,而DocumentFilter只允许数字
- 17. 正则表达式限制特殊字符,只允许DOT和&
- 18. 如何限制字符串不允许使用数字或特殊字符?
- 19. 限制字符串10个字符的jQuery动态元素
- 20. 允许用户ssh到EC2 Ubuntu实例?
- 21. 只允许ASCII字符VBA
- 22. 只允许小写字符
- 23. 只允许某些字符
- 24. 只允许在字母数字和字符之间使用一个字符串
- 25. 只允许一个实例字段但需要更多?
- 26. 限制Django管理员只允许超级用户
- 27. 如何只允许一个用户运行我的C#程序,但也允许多个实例?
- 28. 检查字符串是否只包含允许的字符
- 29. 只想允许字符串中的某些字符
- 30. 只允许字符串中的某些字符
我认为这更符合业务逻辑,所以我会从应用程序而不是数据库处理它 – Gouda
你的意思是在文本列值的内容来计算“用户名”?就像为CEO等文本中的关键字计数一样 – Eralper