我正在尝试将值插入到我创建的表中。 这是我要插入的值。
"\app\DATA\8161ST1\201901\20190111\2562233\" "\\server\i\Run\client\AHFC\201901\app\DATA\8161ST1\201901\20190111\2562233\*.*"
"\app\DATA\8161ST1\201901\20190111\2562234\" "\\server\i\Run\client\AHFC\201901\app\DATA\8161ST1\201901\20190111\2562234\*.*"
"\app\DATA\8161ST1\201901\20190111\2562235\" "\\server\i\Run\client\AHFC\201901\app\DATA\8161ST1\201901\20190111\2562235\*.*"
这是数据类型和约束。
INSERT INTO DDR_Rental (customer_ID, rental_date, rent_fee, film_title, start_date, expiry_date, rating)
VALUES (12345, '12-Mar-19', '4.99', 'Peppermint', '12-Mar-19', '22-Mar-19', 4);
该错误表明违反了唯一约束(CPRG250.SYS_RENTAL_PK)
答案 0 :(得分:1)
您的表中有一个唯一约束。您的表已包含要插入的记录,其中包含customer_id
,rental_date
和film_title
。
尝试此查询,您将看到已经有一条记录
select * from DDR_Rental
where customer_id=12345 and rental_date='12-Mar-19' and film_title='Peppermint'
答案 1 :(得分:1)
您似乎想在同一天为同一位客户添加同一部电影的重复租赁活动。如果您在业务逻辑中考虑到客户可以租借电影的情况,则可以在当天将其归还并再次租回。
了解您的业务后,您可以通过以下两种方式处理这种情况:
您的业务模型不允许这样做。这意味着这是重复记录,您不应该添加当前存在的记录,在这种情况下,由于该事件仅发生一次,因此表明错误完全可以并且不允许重复。
您的业务模型允许这样做。在这种情况下,您应该修改rental_date
列以将时间和日期一起存储,而不是仅存储日期,以便您知道租赁事件的实际发生时间。例如,您可以使用datetime
类型来存储日期和时间。这可以在创建表时完成,只需将rental_date date
替换为rental_date datetime
。如果已创建表,则需要删除并重新创建PRIMARY KEY
,然后可以使用ALTER TABLE ddr_rental ALTER COLUMN rental_date datetime
更改列的类型并重新创建主键。之后检查表中存储的值,因为2019-01-01
现在将以2019-01-01 00:00:00.000
表示,并加上之前未指定的时间。
除了(1)之外,您还可以包装代码并处理此异常,以在发生这种情况时返回一条清晰的消息,表明该电影已被租借。
此外,由于您没有用于在库存中存储电影的表格,因此可能会导致错误,因为您可能拥有多于1部电影。在这种情况下,我建议您创建单独的film和film_copy表,以正确识别已租借的电影副本,以便可以租借另一副本。