sql - 在将新行插入现有表时自动创建新 GUID 不工作
问题描述
我在 MS SQL 中有一个名为 myTab 的现有表。它有以下字段
empno(PK) nchar(10),
age int
现在,我想添加一个 myGUID 列,并在我插入新行以及更新现有行时用 GUID 填充它。
所以我添加了声明
ALTER TABLE myTab ADD myGUID uniqueidentifier DEFAULT NewId() NOT NULL;
更新现有行可以正常工作。
但是,当我尝试插入值时,
插入 myTab 值 ( 1000, 22 );
它失败了,并给出以下消息
**Column name or number of supplied values does not match table definition.**
当我做
插入 sourav_test2 值 (20055711,23,NEWID());
上述声明有效。
我希望在不更改插入语句的情况下填充 GUID。是否可以通过触发器或函数?
解决方案
始终列出您要插入的列!
INSERT INTO myTab (empno, age)
VALUES ('1000', 22);
还要为值使用正确的类型。未提及的列将被分配其默认值,或者NULL
如果没有明确的默认值。
您的表有三列,因此如果您省略列列表,则insert
需要三个值。如果需要,您仍然可以通过在子句中使用DEFAULT
关键字来设置默认值:VALUES
INSERT INTO myTab (empno, age, myGUID)
VALUES ('1000', 22, DEFAULT);