midx
列是使用自动增量(identity 1,1
)的主键。
当我尝试使用此查询插入数据时,这是一个问题:
Insert into coordinfo(mdate, X, Y, lat, lon)
values (GETDATE(), 12344, 334, 34.775, 123.554);
我想在不输入主键的情况下自动增加midx
。
谢谢!
答案 0 :(得分:1)
通常,主键列不能为null,因为它必须是表上的聚簇索引。
为了获得您想要的效果,您应该创建一个带有非空标识列的keys
表。
如果您的表定义如下,使用插入触发器,您的插入DML将为midx
生成一个自动生成的值:
CREATE TABLE keyTable
(
[key] int identity(1,1) primary key not null,
date datetime
)
CREATE TRIGGER myTable_increment_midx ON myTable
after INSERT
AS
BEGIN
DECLARE @key int
INSERT INTO keyTable (date) values (getdate())
SET @key = @@IDENTITY
UPDATE t
set t.midx = @key
FROM mytable t join INSERTED i on i.mdate = t.mdate and ...
END
CREATE TABLE myTable
(
mdate DATETIME,
udate DATETIME,
midx INT PRIMARY KEY NULL, --again, you shouldn't be allowed to do this
X INT,
Y INT,
lat DECIMAL(9, 6),
lon DECIMAL(9, 6)
)
答案 1 :(得分:0)
您可以使用竞争列:
ALTER TABLE coordinfo ADD midx AS idx*100