ID按日期和用户名递增

时间:2015-06-23 02:58:57

标签: mysql sql database

这就是我在order table中的内容,如何使用order_ID来增加user_Name and OrderDate增量?它会起作用吗?

 CREATE TABLE Order
 (
    order_ID int NOT NULL AUTO_INCREMENT,
    user_Name CHAR(15),
    product_ID CHAR(6) NOT NULL,
    order_Quantity int,
    OrderDate datetime NOT NULL DEFAULT GETDATE(),
    PRIMARY KEY(order_ID),
    FOREIGN KEY(user_Name) REFERENCES FUser(user_Name),
    FOREIGN KEY(product_ID) REFERENCES Product(product_ID)
);

示例数据:

order_ID    user_Name   product_ID  order_Quantity  OrderDate
1           blabla      a           2               11-11-08 13:23
1           blabla      b           1               11-11-08 13:23
1           blabla      c           1               11-11-08 13:23
2           c           a           2               11-11-08 13:23
2           c           b           2               11-11-08 13:23

3 个答案:

答案 0 :(得分:0)

Order是SQL的关键字(保留字) 其他关键字 http://std.csit.sci.tsu.ac.th/512021495/user1.1.php

答案 1 :(得分:0)

我自己从不使用触发器(很难调试)......但我担心你需要完成这个自定义工作...看看MSDN(插入/更新触发器)......它会一定会帮助你...

答案 2 :(得分:0)

评论太长了。

包含订单的表应具有OrderId列,该列是自动递增的主键。你的代码写得正确。

但是,您的表格不是订单表。这是一个订单产品表。所以,我会写这样的数据模型:

CREATE TABLE Users (
    UserId NOT NULL AUTO_INCREMENT PRIMARY KEY
    UserName VARCHAR(15)
);

CREATE TABLE Orders (
    OrderId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserId CHAR(15),
    OrderDate datetime NOT NULL DEFAULT GETDATE(),
    FOREIGN KEY (UserId) REFERENCES Users(UserId)
);

CREATE TABLE OrderProducts (
    OrderProductId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ProductId int NOT NULL,
    OrderQuantity int,
    OrderDate datetime NOT NULL DEFAULT GETDATE(),
    FOREIGN KEY(ProductId) REFERENCES Product(ProductId)
);

注意:

  • 所有表都有一个整数主键。这对于外键引用最好。
  • 没有重复的数据,例如user_name。物品存放在一个地方。
  • 这也使用我首选的命名约定。