Oracle检查约束,调用函数

艾伦·穆里根(Alan Mulligan)

我正在尝试查询表(wishlist_table)以查看成员出现在其中的次数。

我正在尝试执行的业务规则是,成员一次可以在愿望清单上最多包含五个项目。

我被告知将其作为域约束来执行,因此我创建了一个函数来检查membersId在wishlist表中出现多少次,但是从我的检查约束中调用the时出现错误

CREATE TABLE WishlistTest
(
WishlistId NUMERIC(6) NOT NULL PRIMARY KEY,
CONSTRAINT chk_Wishlist CHECK (sw3.wishListUpToFiveItems() >= 0 AND sw3.wishListUpToFiveItems() < 5)
);


CREATE OR REPLACE FUNCTION functionWishListUpToFiveItems
RETURN number IS
total number(1) := 0;
BEGIN
SELECT count(*) into total
FROM Member
WHERE MemberId = 1;

IF total < 5 THEN
    return total;
ELSE RETURN -1;
END IF;
END;

如果有人可以告诉我更好的解决方法或发现我做错了,那将是很好的

贾斯汀·凯夫(Justin Cave)

我想你的老师要你

  • 在表格中添加一个整数列以存储愿望清单位置
  • 添加一个约束,以确保成员和愿望清单位置的组合是唯一的
  • 添加一个约束,将愿望清单的位置限制为1到5之间的一个值

对于使用触发器或实例化视图(在实例化视图上具有约束)的替代方法,以及可能更多关于Oracle应该如何允许某种断言语法​​来实施这种约束的讨论,您可以浏览一下askTom线程

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章