【发布时间】:2018-12-06 10:31:06
【问题描述】:
是否可以有一个非空列,通过调用存储过程在插入时生成值,该存储过程的参数是传递给插入行的值?
例如,我有表User:
| username | name | surname | id |
插入看起来像这样:
INSERT INTO USER (username, name, surname)
VALUES ('myusername', 'myname', 'mysurname');
id 列填充了一个(整数)值,该值是通过调用存储过程 mystoredproc 检索到的,参数为 myusername、myname、mysurname。
另一个问题是,这个存储过程是在每一行上调用,还是以分组方式调用。例如,我希望我的存储过程采用 name 并向其附加一个随机整数,这样如果我插入 100 个名为“David”的用户,他们将获得相同的 id 和存储过程只会被调用一次。关于第二点的一个坏例子。
【问题讨论】:
-
这种方式一次只能插入一行。
-
如何定义列
id?我不记得如何为主键定义自定义逻辑,而不是自动递增,调用存储过程。我需要谷歌做什么?虽然,id列不一定是主键,在我的扩展中,当然不能是主键。 -
你是什么意思“你会如何定义它”?你说它是一个整数。它还需要什么定义?
-
如果使用函数而不是存储过程,可以在默认约束中调用函数:dba.stackexchange.com/questions/163714/…
标签: sql sql-server tsql sql-server-2014