如何从C#向SQL表添加顺序编号

本文关键字:添加 顺序 编号 SQL | 更新日期: 2023-09-27 18:20:03

我希望所有表都包含一个唯一的tableID列编号。

在MySQL 中插入序列号

这几乎是我想要实现的,但来自我的C#应用程序。

编辑:添加带有主键和自动增量的ID列就是我所需要做的。谢谢你determisticFail

如何从C#向SQL表添加顺序编号

来自您的错误日志:

ERROR 1067: Invalid default value for 'Status'
SQL Statement:
ALTER TABLE `lianowar_woodlandlumberbook`.`book`
CHANGE COLUMN `Customer_Ph` `Customer_Ph` VARCHAR(16) NOT NULL ,
CHANGE COLUMN `Status` `Status` VARCHAR(10) NOT NULL DEFAULT NULL ,
DROP PRIMARY KEY,
ADD PRIMARY KEY (`Customer_Name`, `Status`)
ERROR: Error when running failback script. Details follow.
ERROR 1050: Table 'book' already exists
SQL Statement:
CREATE TABLE `book` (
  `Customer_Name` varchar(20) NOT NULL,
  `Customer_Ph` varchar(16) DEFAULT NULL,
  `Customer_Ph2` varchar(30) NOT NULL,
  `Info_Taken_By` varchar(12) NOT NULL,
  `Project_Type` varchar(20) NOT NULL,
  `Project_Size` varchar(20) NOT NULL,
  `Date_Taken` varchar(5) NOT NULL,
  `Date_Needed` varchar(5) NOT NULL,
  `Sales_Order` varchar(5) NOT NULL,
  `Information` text NOT NULL,
  `Status` varchar(10) DEFAULT NULL,
  `tableID` varchar(5) DEFAULT NULL,
  PRIMARY KEY (`Customer_Name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

您尝试定义一个NOT NULL列,并将其指定为默认的NULL。您应该考虑您的数据类型,tableID应该是数字数据类型(顺便说一句,名称不好,只有id或bookId会更好)。

对于您的问题:你应该定义这样的表

CREATE TABLE `book` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `Customer_Name` varchar(20) NOT NULL,
  `Customer_Ph` varchar(16) DEFAULT NULL,
  `Customer_Ph2` varchar(30) NOT NULL,
  `Info_Taken_By` varchar(12) NOT NULL,
  `Project_Type` varchar(20) NOT NULL,
  `Project_Size` varchar(20) NOT NULL,
  `Date_Taken` varchar(5) NOT NULL,
  `Date_Needed` varchar(5) NOT NULL,
  `Sales_Order` varchar(5) NOT NULL,
  `Information` text NOT NULL,
  `Status` varchar(10) DEFAULT NULL,  
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我不知道你真正需要哪些数据类型,因为我不知道要存储的数据。但是要使用主键和Auto_increment功能,这就可以了。

不要从应用程序代码中执行此操作。曾经应用程序代码无法保证唯一性,因为在试图同时插入的多个客户端之间存在潜在的竞争条件。它也会更慢,因为应用程序代码必须首先从数据库请求一个当前值,然后再对其进行增量,从而产生两个独立的数据库事务。

另一方面,数据库已经具有确保原子性和唯一性的功能,并且可以按顺序响应请求,从而使其能够更快、更好地完成这项工作。事实上,几乎所有的数据库,包括MySql,都已经内置了这个功能。