我正在尝试使用伪造银行名称表中的随机银行名称更新邮件表。问题是邮件表已经包含一个标识字段,所以我收到了错误
为表'generic_banks'指定了多个标识列。每个表只允许一个标识列。
这是我的代码:
ALTER TABLE generic_banks ADD ID_new INT NOT NULL IDENTITY(1,1)
CREATE UNIQUE NONCLUSTERED INDEX ix ON generic_banks(ID_new)
UPDATE m
SET m.alias = b.bank_alias
FROM mail_detail_lz m
INNER LOOP JOIN generic_banks b ON b.ID_new = (1 + ABS(CRYPT_GEN_RANDOM(8)%50000))
请帮忙
答案 0 :(得分:0)
如果您想将一个表中的随机名称分配给另一个表,我可能会建议更像这样的内容:
with toupdate as (
select m.*, row_number() over (order by newid()) as seqnum
from mail_detail_lz m
),
gb as (
select gb.*, row_number() over (order by newid()) as seqnum
from generic_banks gb
)
update toupdate
set alias = gb.bank_alias
from toupdate join
gb
on toupdate.seqnum = gb.seqnum;
这是一种不允许重复的通用方法。如果它不适合你,那么类似的东西应该有效。
答案 1 :(得分:0)
每个表只能创建一个标识列。 MS Link
您需要创建ID_new字段作为非标识字段或删除现有标识字段。