如何来做这个工作?

computerstarveling 2004-10-10 12:52:18
麻烦大家先听听我的这个构思:
我想做一个insert/update触发器,然后判断inserted中A字段的值是否是数字,如果不是则提示一句话,现在我想把这句话能够在我的程序中显示出来,应该怎么做呢?
...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjdn 2004-10-10
  • 打赏
  • 举报
回复
楼主为什么不在程序中直接判断呢?
0-9的ascii值是从48-57

你只要判断ascii值,就可以判断它们是否是数字,而且在程序中就可以判断,为什么还要经过触发器?
mgsray 2004-10-10
  • 打赏
  • 举报
回复
isnumeric()判断之后
raiserror 报错但之后就不会处理了
如果是希望之后的继续进行,只是报一个警告的话,建议在程序里面判断是否数字
pbsql 2004-10-10
  • 打赏
  • 举报
回复
CREATE TRIGGER tr_1 ON t
FOR INSERT,UPDATE
AS
if exists(select * from inserted where isnumeric(A)<>1)
begin
rollback
raiserror('A不是数字!!!',16,1)
end

然后在程序中捕捉错误信息
pbsql 2004-10-10
  • 打赏
  • 举报
回复
一段通用的代码:
try
ADOQuery1.Post;
except
mss:='数据保存出错!'+#13+'出错代码:'+inttostr(ADOCnn.Errors.Item[0].NativeError)+#13+'出错信息:'+ADOCnn.Errors.Item[0].Description;
MessageBox(handle,pchar(mss),'警告',MB_OK+MB_ICONWARNING);
end;
computerstarveling 2004-10-10
  • 打赏
  • 举报
回复
我用的是DELPHI,哪位可以帮忙告诉一下怎么捕捉吗?
pbsql 2004-10-10
  • 打赏
  • 举报
回复
关键这个错误怎么在前台程序来捕捉?

这个由开发工具而定,具体怎么做建议翻翻书
computerstarveling 2004-10-10
  • 打赏
  • 举报
回复
CREATE TRIGGER tr_1 ON t
FOR INSERT,UPDATE
AS
if exists(select * from inserted where isnumeric(A)<>1)
begin
rollback
raiserror('A不是数字!!!',16,1)
end

然后在程序中捕捉错误信息

------------------------
关键这个错误怎么在前台程序来捕捉?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧