将值插入表格

时间:2019-04-21 21:18:17

标签: sql sqlplus

我正在尝试将值插入到我创建的表中。 这是我要插入的值。

"\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)

2 个答案:

答案 0 :(得分:1)

您的表中有一个唯一约束。您的表已包含要插入的记录,其中包含customer_idrental_datefilm_title

尝试此查询,您将看到已经有一条记录

select * from DDR_Rental
where customer_id=12345 and rental_date='12-Mar-19' and film_title='Peppermint'

答案 1 :(得分:1)

您似乎想在同一天为同一位客户添加同一部电影的重复租赁活动。如果您在业务逻辑中考虑到客户可以租借电影的情况,则可以在当天将其归还并再次租回。

了解您的业务后,您可以通过以下两种方式处理这种情况:

  1. 您的业务模型不允许这样做。这意味着这是重复记录,您不应该添加当前存在的记录,在这种情况下,由于该事件仅发生一次,因此表明错误完全可以并且不允许重复。

  2. 您的业务模型允许这样做。在这种情况下,您应该修改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表,以正确识别已租借的电影副本,以便可以租借另一副本。