我正在使用图书馆数据库,它包含一个名为book_transaction的表格。
有两列名为issued_date
和due_date
。 due_date
应距离issued_date
7天。我可以在创建表时使用default
关键字指定此条件吗?
如果不可能,请为此选择替代方案。
谢谢,
答案 0 :(得分:4)
Oracle default
约束不能引用其他列。您可以使用触发器获得相同的功能(请参阅this answer):
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
添加号码来添加天数。
答案 1 :(得分:3)
您可以为表创建触发器。
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)
答案 2 :(得分:2)
感谢您使用“fabulaspb”的完整评论。我想出了这个
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
);
创建表时没有错误,表现正常。 感谢你所做的一切。