oracle - 唯一约束检查
问题描述
我只想为检查数据是否已经存在并且它不工作的唯一约束设置触发器..请帮帮我
DECLARE
V NUMBER;
BEGIN
SELECT COUNT (*)
INTO V
FROM AR_RECEIPTS
WHERE BANK_INSTRUMENT_NO = :BANK_INSTRUMENT;
IF V= 0
THEN
MESSAGE ('Instrument Number Already Exists!');
MESSAGE ('Instrument Number Already Exists!');
RAISE FORM_TRIGGER_FAILURE;
END IF;
END;
解决方案
如果您想在用户尝试插入重复的 BANK_INSTRUMENT 时显示消息,您的测试应该是IF V > 0
. 目前,当目标表中不存在该仪器编号时,您会显示消息。
请注意,虽然此检查可能看起来对用户友好——在 UI 中检查并通知用户,而不是从数据库中获取异常——但它并不安全。在多用户环境中,两个用户可以输入相同的号码,全部清除并提交重复。您仍然需要在数据库中强制执行唯一约束:
alter table ar_receipts add constraint ar_receipts_uk unique (bank_instrument_no);
推荐阅读
- python - python相当于SAS中的过程FACTMAC
- r - 如何根据另一列中值的出现设置因子水平顺序?
- python - 使用 Python 抓取 XML 文件
- python - 类似于 numpy.take 的函数,用于索引 out 参数
- api - 如何使用 gRPC 创建一个 rest API 来读取 go lang 中的文本或任何文件?
- jquery - 我的 jquery 正在工作,直到仅在 sharepoint 中刷新
- amazon-web-services - 如何在 AppDrag 上导出我的项目?
- python - 如何使用 ruamel.yaml 转储文字标量
- mkdocs - 如何链接pdf
- solr - 对于未存储的字段,值太大