Ald*_*dur 11 mysql sql-server auto-increment
我想在SqlServer中创建一个表,它将在插入时添加一个自动递增的主键.这应该是一个类似于MySql auto_increment功能的自动增量id.(下面)
create table foo
(
user_id int not null auto_increment,
name varchar(50)
)
Run Code Online (Sandbox Code Playgroud)
有没有办法在创建插入触发器的情况下执行此操作?
SQL*_*ace 21
像这样
create table foo
(
user_id int not null identity,
name varchar(50)
)
Run Code Online (Sandbox Code Playgroud)
OP请求自动递增的主键.IDENTITY关键字本身不会使列成为主键.
CREATE TABLE user
(
TheKey int IDENTITY(1,1) PRIMARY KEY,
Name varchar(50)
)
Run Code Online (Sandbox Code Playgroud)
他们已经回答了你的问题,但我想为新用户使用标识列添加一些建议.有时您必须返回刚刚插入的标识的值,以便您可以插入到相关的表中.许多消息来源会告诉您使用@@ identity来获取此值.如果您想保持数据完整性,在任何情况下都不应该使用@@ identity.如果添加其中一个插入到另一个表,它将给出在触发器中创建的标识.由于您无法保证@@ identity的值始终是正确的,因此最好永远不要使用@@ identity.使用scope_identity()来获取此值.我知道这有点偏离主题,但对于理解如何在SQL Server中使用标识非常重要.相信我,你不想修复有错误身份价值的相关记录的问题.这可能会在发现之前几个月悄然出错,之后几乎无法修复数据.
| 归档时间: |
|
| 查看次数: |
26297 次 |
| 最近记录: |