Sql server 使用SQL Server更新触发器中的空主键
我正在将我们的系统从Oracle迁移到SQL SERVER。在Oracle中,我们有insert触发器,如果未设置主键,则可以对其进行重新设置。下面是PL/SQL中的代码Sql server 使用SQL Server更新触发器中的空主键,sql-server,tsql,triggers,primary-key,Sql Server,Tsql,Triggers,Primary Key,我正在将我们的系统从Oracle迁移到SQL SERVER。在Oracle中,我们有insert触发器,如果未设置主键,则可以对其进行重新设置。下面是PL/SQL中的代码 create or replace trigger trigg1 before insert on table1 for each row when (new.ID_T1 is null) -- if primary key is null begin select OUR_SEQ.nextval into
create or replace trigger trigg1
before insert on table1
for each row
when (new.ID_T1 is null) -- if primary key is null
begin
select OUR_SEQ.nextval into :new.ID_T1 from dual;
end trigg1;
现在我必须在T-SQL中执行类似的操作。我找到了解决方案,但不幸的是,我必须列出创建表触发器的所有列。这是我想要避免的,因为系统的模型仍然是非常动态的
是否可以在不列出触发器中的所有列的情况下实现这样的触发器
Marcin只需将您的PK列定义为INT-IDENTITY,并让SQL Server为您处理所有繁重的工作!谢谢你的回复,这太简单了:有时候PK是从客户端应用程序设置的。天哪-然后你必须检查并确保这个值没有被使用??这太疯狂了——说真的:别再那样做了。不要让UI中的用户选择PK!由于2012版之前的SQL Server没有序列,我仍然建议:更改你的应用程序,让SQL Server处理所有PK生成。不,你必须列出所有列。列的定义必须允许null,这意味着您不能将其声明为主键。