Rumah pangkalan data tutorial mysql ORACLE中实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能

ORACLE中实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能

Jun 07, 2016 pm 03:51 PM
oracle sqlserver capai

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 最近在做一个把SQL SERVER中的数据库的表同步到ORACLE 中,排除解决了了一系列如类型不匹配等产生的错误后,终于将数据同步过来了,可是又发现了一个新问题:SQL SERVER中源表的ID是通过IDENTITY(1

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  最近在做一个把SQL SERVER中的数据库的表同步到ORACLE 中,排除解决了了一系列如类型不匹配等产生的错误后,终于将数据同步过来了,可是又发现了一个新问题:SQL SERVER中源表的ID是通过IDENTITY(1,1)自增的,ORACLE中的表示通过sequences实现的自增,但问题是:我是通过在SQL SERVER中的存储过程,经由链接服务器直接将数据插入到ORACLE的表中,这样,SQL SERVER中的存储过程中就没办法直接调用ORACLE的sequences进行ID的自增。直接将SQL SERVER中表的ID复制到ORACLE表中又会使得ID重复不唯一。

  以下有一种方法,可以让ORACLE中的表实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能,原理是通过sequences与triggers触发器实现。

  首先,在ORACLE建立一个sequences:

  create sequence SEQ_TABLE_TEST

  minvalue 1

  maxvalue 999999999

  start with 1

  increment by 1

  cache 20;

  再建立一个triggers:

  create or replace trigger TGR_TABLE_TEST

  before insert on TABLE_TEST

  for each row

  declare

  -- local variables here

  begin

  if inserting and :new.id is null then

  :new.id := SEQ_TABLE_TEST.nextval;

  end if;

  end TGR_TABLE_TEST;

  好了,这样就可以实现自增功能了,无论是正常插入:

  insert into TABLE_TEST

  values(seq_table_test.nextval,1.1)

  还是

  insert into TABLE_TEST(value)

  values(1.2)

  或者是

  insert into TABLE_TEST(id,value)

  values(null,1.3)

  表TABLE_TEST中的ID字段都实现了自增的功能。

  另外因为triggers中有:new.id is null的判断,当正常调用seq_table_test.nextval插入时,也不会产生浪费sequences序号的现象。

ORACLE中实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Berfungsi untuk mengira bilangan hari antara dua tarikh dalam oracle Berfungsi untuk mengira bilangan hari antara dua tarikh dalam oracle May 08, 2024 pm 07:45 PM

Berfungsi untuk mengira bilangan hari antara dua tarikh dalam oracle

Berapa lama log pangkalan data Oracle akan disimpan? Berapa lama log pangkalan data Oracle akan disimpan? May 10, 2024 am 03:27 AM

Berapa lama log pangkalan data Oracle akan disimpan?

Urutan langkah permulaan pangkalan data oracle ialah Urutan langkah permulaan pangkalan data oracle ialah May 10, 2024 am 01:48 AM

Urutan langkah permulaan pangkalan data oracle ialah

Cara menggunakan selang dalam oracle Cara menggunakan selang dalam oracle May 08, 2024 pm 07:54 PM

Cara menggunakan selang dalam oracle

Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle May 10, 2024 am 04:00 AM

Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle

Bagaimana untuk melihat bilangan kemunculan watak tertentu dalam Oracle Bagaimana untuk melihat bilangan kemunculan watak tertentu dalam Oracle May 09, 2024 pm 09:33 PM

Bagaimana untuk melihat bilangan kemunculan watak tertentu dalam Oracle

Berapa banyak memori yang diperlukan oleh oracle? Berapa banyak memori yang diperlukan oleh oracle? May 10, 2024 am 04:12 AM

Berapa banyak memori yang diperlukan oleh oracle?

Bagaimana untuk menggantikan rentetan dalam oracle Bagaimana untuk menggantikan rentetan dalam oracle May 08, 2024 pm 07:24 PM

Bagaimana untuk menggantikan rentetan dalam oracle

See all articles