给定一个表,例如文章(Id,Body,Revisions),我想增加Revisions属性,并且一旦达到某个限制(这是开发人员提供的常量) ),应该抛出一个错误。这可以通过T-SQL中的单个UPDATE ... SET语句来实现吗?
我做了什么:
问题
上下文
由于我使用EF,理想的解决方案是抛出错误或指定某种标志。我正在使用的代码(如下所示)被封装到try-catch中:
context.Database.ExecuteSqlCommand("UPDATE dbo.Articles SET Revisions = Revisions + 1 WHERE Id=@p0;", articleId);
答案 0 :(得分:2)
使用CHECK约束。没有更新语句可以违反由CHECK约束实现的边界。甚至没有睡眠剥夺的DBA在控制台发布的更新声明。
{{1}}
答案 1 :(得分:2)
您可以使用table_ + ... + scale_x_discrete(limit = levels)
语句中的WHERE
子句执行此操作,该子句将进行测试。如果测试失败,则不会进行更新,而UPDATE
的通话将返回0而不是1。
如果限制为1000,则更新SQL为:
context.Database.ExecuteSqlCommand
然后你会测试是否count = context.Database.ExecuteSqlCommand(
"UPDATE dbo.Articles SET Revisions = Revisions + 1 WHERE Id=@p0 AND Revisions < 1000;", articleId);
并提出错误信息。
答案 2 :(得分:1)
有点受伤但是
UPDATE dbo.Articles
SET Revisions = Revisions + 1
WHERE Id=@p0
AND sqrt(Revisions - @MaxRevisions - 2) >= 0;
如果Revisions - @Revisions - 2为负数则会抛出
发生了无效的浮点运算。
错误
答案 3 :(得分:0)
如果限制为100,
echo ╔════════════════════════════╗
echo ║Bill register/database Menu ║
echo ╠════════════════════════════╣
echo ║ 1. -Register a bill ║
echo ║ 2. -Check Bill Info ║
echo ║ 3. Set payment ║
echo ╚════════════════════════════╝