Mysql 按日期和用户名递增的Id

Mysql 按日期和用户名递增的Id,mysql,sql,database,Mysql,Sql,Database,这是我的订单表中的内容,如何使用用户名和订单日期增加订单ID?行吗 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(ord

这是我的订单表中的内容,如何使用用户名和订单日期增加订单ID?行吗

 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

Order是SQL的关键字保留字 其他关键字

我自己从来不使用触发器,很难调试…但恐怕这正是您完成此自定义任务所需要的…请查看MSDN中的插入/更新触发器…它肯定会帮助您…

这篇评论太长了

包含订单的表应该有一个OrderId列,该列是自动递增的主键。您的代码是正确的

但是,您的表不是orders表。这是一个订单产品表。因此,我将这样编写数据模型:

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)
);
注:

所有表都有一个整数主键。这最适合外键引用。 没有重复的数据,例如用户名。东西都存放在一个地方。 这也使用了我喜欢的命名约定。
你在使用什么数据库?我看到了SQLServer、MySQL和Oracle的特性。请适当地标记问题。此外,样本数据和期望的结果将有助于其他人理解您的问题。Order在几乎所有数据库中都不是一个可接受的表名。MySQL工作台,我把Forder放在我的表中