改进项目所需的指导

时间:2021-07-29 17:29:38

标签: sql sql-server tsql foreign-keys primary-key

对于我的项目,我选择了范围较小的在线食品订购服务。我已经完成了,但我想进一步改进它(它只会通过查询而不是 GUI 运行)。

这是我想要改进的 2 个表

CREATE TABLE OrderPlaced
(
    OrderId bigint IDENTITY(1,1) PRIMARY KEY, //primary key
    PlacedAt time,
    PlacedOn date DEFAULT GETDATE(),
    Discount int DEFAULT 0,
    Total money DEFAULT 0,
)

ALTER TABLE OrderPlaced
    ADD CONSTRAINT df_time
        DEFAULT CONVERT(varchar(10), GETDATE(), 108) FOR PlacedAt;

上表是自动生成主键的主表之一,表中没有手动插入值,我插入默认值是生成的键,当前日期和时间,0表示总和折扣,如果有折扣,稍后更新。

下面显示的表格是明细表,在这里您输入所有所需的产品及其数量,它会在插入时计算每个单独项目的小计,插入后触发器会在 orderplaced 表中更新它,然后在更新后在下订单表中的折扣值是通过触发器计算的。

CREATE TABLE Cart_t
(
    CustomerId bigint NOT NULL,
    MenuId bigint NOT NULL,
    OrderId bigint NOT NULL,
    Quantity int NOT NULL,
    Price money NOT NULL,
    SubTotal AS (Quantity * Price) PERSISTED
)

这是我想要改进的地方。为了让这个系统使用输入的 OrderId 记录必须存在于 orderplaced 表中,否则在插入购物车时它会给出一个错误,指出缺少一个主键。所以我想要的是一种让计算机在购物车中插入新的 OrderId 时自动插入默认记录的方法。我猜你需要一个而不是插入触发器,但我需要一些关于如何使用它的指导。

另外,英语不是我的母语,请用简单的语言回答。

谢谢

0 个答案:

没有答案
相关问题