我正在处理图书馆数据库,其中包含一个名为book_transaction的表格。有两列分别叫做issued_date和due_date。due_date应该是issued_date后7天。我可以在创建表格时使用default关键字来指定这个条件吗?
如果不行,请提供相应的替代方案。
谢谢。
如果不行,请提供相应的替代方案。
谢谢。
Oracle的default
约束不能引用其他列。您可以使用触发器获得相同的功能(请参见此答案):
CREATE TRIGGER book_transaction_trigger
BEFORE INSERT ON book_transaction
FOR EACH ROW
BEGIN
IF :new.due_date IS NULL THEN
:new.due_date := :new.issued_date + 7;
END IF;
END book_transaction_trigger;
date
是指日期。CREATE TRIGGER test_trigger BEFORE INSERT ON `book_transaction`
FOR EACH ROW SET NEW.issued_date = IFNULL(NEW.entryDate,NOW()),
NEW.due_date = TIMESTAMPADD(DAY,7,NEW.issued_date)
create table book_transaction
(
transaction_number int primary key,
book_isbn int REFERENCES book_master(book_isbn),
student_code int references student_master(student_code),
issued_date date default sysdate,
due_date date as (issued_date+7),
submited_date date,
fine int
);