使两个字段自动递增的优雅方法是什么?

发布于 2024-08-09 11:04:13 字数 178 浏览 7 评论 0原文

在 SQL Server 中,我有两个字段,一个是主要字段,具有标识 (AN_ID),然后我还有另一个字段,由于遗留原因(不要询问)必须更新以反映 AN_ID。目前它们具有完全相同的值。我想知道是否有纯 T-SQL 查询(无存储过程)使其自动递增。

非常感谢你

编辑:我被迫使用 SQL Server 2000

In SQL Server, I have two fields, one is primary and has an identity (AN_ID) then I have another one that for legacy reasons (don't ask) has to be updated reflecting the AN_ID. Currently they have the exact same value. I was wondering if there are pure T-SQL query (no stored procedures) to make it auto incremente.

Thank you very much

Edit: I'm forced to SQL Server 2000

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

春夜浅 2024-08-16 11:04:13

如果两个字段可以包含相同的值,那么您可以使用插入触发器或计算列(SQL 2005 中的新功能)来完成此操作。

编辑:这样的东西应该有效。

CREATE TRIGGER MyTable_AI ON MyTable
AFTER INSERT AS
    UPDATE MyTable
    SET OTHER_ID = AN_ID
    WHERE AN_ID IN (SELECT AN_ID FROM inserted);

If both fields can contain the same value, then you can use an insert trigger or a computed column (new in SQL 2005) to accomplish this.

EDIT: Something like this should work.

CREATE TRIGGER MyTable_AI ON MyTable
AFTER INSERT AS
    UPDATE MyTable
    SET OTHER_ID = AN_ID
    WHERE AN_ID IN (SELECT AN_ID FROM inserted);
尾戒 2024-08-16 11:04:13

“正确”的解决方案几乎肯定是使用触发器,但是如果这属于“无存储过程”的标题,那么您可以通过运行两个连续查询(您应该能够将其作为一个查询从您的调用应用程序 - 对于了解您在 SQL Server 上使用的环境很有用)。

例如(非常粗略地)

INSERT INTO tbl (col1, col2, col3) values (@col1param, @col2param, @col3param);
UPDATE tbl SET not_an_id = an_id WHERE an_id = SCOPE_IDENTITY()

The "right" solution is almost certainly to use a trigger, however if that falls under the heading of "no stored procedures" then you can fudge things a little by running two consective queries (which you should be able to send as one query from your calling app - be useful to know what environment you're using on top of SQL Server).

e.g. (very roughly)

INSERT INTO tbl (col1, col2, col3) values (@col1param, @col2param, @col3param);
UPDATE tbl SET not_an_id = an_id WHERE an_id = SCOPE_IDENTITY()
南城追梦 2024-08-16 11:04:13

第二列可以是具有公式 AN_ID 的计算列。

您还可以创建别名为 AN_ID 的视图。

The second column could be a computed column with the formula AN_ID.

You could also create a view with an alias of AN_ID.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文