我正在创建一个购物车,其中用户可以在购物车中有多个项目,但不能重复,并且多个用户可以在购物车中有相同的列表。我不知道如何阻止用户多次将相同的项目添加到购物车中。第一个
dced5bon1#
如何防止用户多次向购物车添加相同的商品只需在cart表上定义一个唯一键即可。由于似乎没有在该表上定义主键,因此这样使用主键是有意义的:
cart
CREATE TABLE CART ( USERID INT NOT NULL, LISTINGID INT NOT NULL, PRIMARY KEY (USERID, LISTINGID), FOREIGN KEY(USERID) REFERENCES USERS(ID), FOREIGN KEY(LISTINGID) REFERENCES LISTING(ID) );
这会胁迫对数据进行适当的完整性检查,而且可能不需要存储程序。如果尝试执行违规的insert,数据库会直接引发相关的错误,然后可以在应用程序中行程。
insert
insert into USERS (ID) values(1), (2); insert into LISTING (ID) values(1), (2); insert into CART (USERID, LISTINGID) values (1, 1); insert into CART (USERID, LISTINGID) values (1, 2); insert into CART (USERID, LISTINGID) values (2, 1); -- ok insert into CART (USERID, LISTINGID) values (1, 1); -- ERROR: Duplicate entry '1-1' for key 'CART.PRIMARY'
1条答案
按热度按时间dced5bon1#
如何防止用户多次向购物车添加相同的商品
只需在
cart
表上定义一个唯一键即可。由于似乎没有在该表上定义主键,因此这样使用主键是有意义的:这会胁迫对数据进行适当的完整性检查,而且可能不需要存储程序。如果尝试执行违规的
insert
,数据库会直接引发相关的错误,然后可以在应用程序中行程。