Oracle 能不能实现联合主键中的一个键自增长

时间:2022-11-20 13:42:35
如题  在oracle里建了一张表 有那么几个字段 A varchar2(56) B date C int  D varchar2(256) E varchar2(256)  其中ABC为联合主键  当插入的数据 AB相同的时候C+1  如果不一样让C=1  hibernate要怎么样实现这个功能呢?

11 个解决方案

#1


联合主键貌似不能实现自增吧。

#2


引用 1 楼 Wentasy 的回复:
联合主键貌似不能实现自增吧。

那有什么方法可以实现这个功能吗?

#3


僅僅只是 要實現功能的話,應該可以用trigger 寫吧。

#4


很简单的一个触发器,百度一下,你就知道。

#5


引用 3 楼 dengxin1847 的回复:
僅僅只是 要實現功能的話,應該可以用trigger 寫吧。

请问trigger 是什么东西?

#6


引用 4 楼 xu176032 的回复:
很简单的一个触发器,百度一下,你就知道。

求关键字啊... 百度不到

#7


引用 6 楼 u011434924 的回复:
Quote: 引用 4 楼 xu176032 的回复:

很简单的一个触发器,百度一下,你就知道。

求关键字啊... 百度不到



就是触发器。
CREATE OR REPLACE TRIGGER INSERT_TRG
  AFTER INSERT ON DATABASENAME
BEGIN
   --实现判断
   if a = b then
      c := c+1 ;
   elseif a != b then
      c := 1;
   end if;
END;

#8


变量前别忘 加  :new.   

#9


引用 7 楼 pobaby 的回复:
Quote: 引用 6 楼 u011434924 的回复:

Quote: 引用 4 楼 xu176032 的回复:

很简单的一个触发器,百度一下,你就知道。

求关键字啊... 百度不到



就是触发器。
CREATE OR REPLACE TRIGGER INSERT_TRG
  AFTER INSERT ON DATABASENAME
BEGIN
   --实现判断
   if a = b then
      c := c+1 ;
   elseif a != b then
      c := 1;
   end if;
END;

非常感谢!

#10


引用 5 楼 u011434924 的回复:
Quote: 引用 3 楼 dengxin1847 的回复:

僅僅只是 要實現功能的話,應該可以用trigger 寫吧。

请问trigger 是什么东西?
 就是樓下說的觸發器。

#11


请问如果是下面这种情况该怎么实现呢?
在oracle里建了一张表 有那么几个字段 A varchar2(56)B int  C varchar2(256) D varchar2(256)  其中AB为联合主键  当插入多条数据 A相同的时候B+1  如果几条数据的A不同让B=1  要怎么样实现这个功能呢?

#1


联合主键貌似不能实现自增吧。

#2


引用 1 楼 Wentasy 的回复:
联合主键貌似不能实现自增吧。

那有什么方法可以实现这个功能吗?

#3


僅僅只是 要實現功能的話,應該可以用trigger 寫吧。

#4


很简单的一个触发器,百度一下,你就知道。

#5


引用 3 楼 dengxin1847 的回复:
僅僅只是 要實現功能的話,應該可以用trigger 寫吧。

请问trigger 是什么东西?

#6


引用 4 楼 xu176032 的回复:
很简单的一个触发器,百度一下,你就知道。

求关键字啊... 百度不到

#7


引用 6 楼 u011434924 的回复:
Quote: 引用 4 楼 xu176032 的回复:

很简单的一个触发器,百度一下,你就知道。

求关键字啊... 百度不到



就是触发器。
CREATE OR REPLACE TRIGGER INSERT_TRG
  AFTER INSERT ON DATABASENAME
BEGIN
   --实现判断
   if a = b then
      c := c+1 ;
   elseif a != b then
      c := 1;
   end if;
END;

#8


变量前别忘 加  :new.   

#9


引用 7 楼 pobaby 的回复:
Quote: 引用 6 楼 u011434924 的回复:

Quote: 引用 4 楼 xu176032 的回复:

很简单的一个触发器,百度一下,你就知道。

求关键字啊... 百度不到



就是触发器。
CREATE OR REPLACE TRIGGER INSERT_TRG
  AFTER INSERT ON DATABASENAME
BEGIN
   --实现判断
   if a = b then
      c := c+1 ;
   elseif a != b then
      c := 1;
   end if;
END;

非常感谢!

#10


引用 5 楼 u011434924 的回复:
Quote: 引用 3 楼 dengxin1847 的回复:

僅僅只是 要實現功能的話,應該可以用trigger 寫吧。

请问trigger 是什么东西?
 就是樓下說的觸發器。

#11


请问如果是下面这种情况该怎么实现呢?
在oracle里建了一张表 有那么几个字段 A varchar2(56)B int  C varchar2(256) D varchar2(256)  其中AB为联合主键  当插入多条数据 A相同的时候B+1  如果几条数据的A不同让B=1  要怎么样实现这个功能呢?