我一直在努力想出一种插入检查的方式,以便它不会允许付款日期早于发票日期。基本上,我有两张表:发票和付款。所以我想要一个支票约束来在发票表中的购买日期之前输入付款日期。发票表中的invoice_id是付款表中的FK。任何帮助?在Oracle中检查约束条件
0
A
回答
3
检查约束只能查看它在其上定义的表上的列。
您需要使用TRIGGER来执行此操作。
2
一种方法可能是在付款表中复制购买日期,在invoice_id +购买日期的组合上添加第二个唯一约束,然后修改FK约束以包含它。然后,你可以有你的行级约束。例如
CREATE TABLE invoices
(invoice_id NUMBER NOT NULL
, purchase_date DATE NOT NULL
, CONSTRAINT invoice_pk PRIMARY KEY (invoice_id)
, CONSTRAINT invoice_uk UNIQUE (invoice_id, purchase_date)
);
CREATE TABLE payments
(payment_id NUMBER NOT NULL
, invoice_id NUMBER NOT NULL
, purchase_date DATE NOT NULL
, payment_date DATE NOT NULL
, CONSTRAINT payment_pk PRIMARY KEY (payment_id)
, CONSTRAINT payment_invoice_fk
FOREIGN KEY (invoice_id, purchase_date)
REFERENCES invoices (invoice_id, purchase_date)
, CONSTRAINT payment_date_ck
CHECK (payment_date >= purchase_date)
);
缺点:更新invoices.purchase_date变得有点棘手。
相关问题
- 1. 在Oracle SQL中检查约束条件
- 2. Oracle检查约束
- 3. Oracle检查约束
- 4. 检查约束的条件
- 5. 约束检查Oracle SQL
- 6. 一个Oracle检查约束
- 7. Oracle SQL在多表级别添加检查约束条件
- 8. 检查SQL中的约束条件
- 9. Oracle找到约束条件
- 10. 列上的SQL检查约束条件
- 11. 检查表上的约束条件
- 12. Oracle中的完整性约束条件
- 13. oracle db中的条件唯一约束
- 14. 检查约束
- 15. 检查约束
- 16. 检查约束
- 17. 检查约束
- 18. 检查约束
- 19. 检查约束
- 20. 在search_condition的值后查询Oracle约束条件
- 21. 在SQL Server 2008中检查约束条件
- 22. 在检查约束中使用日期,Oracle
- 23. 检查在表中增加约束(Oracle)的
- 24. 如何在oracle sql中检查非空列约束?
- 25. PostgreSQL检查约束
- 26. SQL约束检查
- 27. 检查sql约束
- 28. 如何在语句前运行检查约束条件
- 29. 在创建表格时检查约束条件返回错误
- 30. url_for如何检查我的routes.rb中的约束条件
您可以使用相同的触发器。 – 2012-04-05 05:12:44
使用之前插入和检查日期选择并相互比较,所以你可以作出插入决定 – 2012-04-05 07:24:44