我有表organisation
並且它有一列。如果不存在值,則爲列值創建最小值爲1的序列,如果存在值,則創建1列大於列上最大值的序列
現在,我應該創建一個序列,每創建一個新的organisation
(如在一個新行中持久化到表) - 新行上的列將獲得值1如果沒有值存在任何行上的列。如果IF值存在,新行將在所述列上得到一個值,這將是表中所述列的最高值加1。
例子:如果將沒有行或者只有該行對列中沒有值,新添加的organisation
行會得到1作爲其CUSTOMER_NUMBER列的值。如果已經有例如在所述列上具有值的兩行(例如100和200),則新行將在該列上獲得值201。
我只是無法弄清楚SQL法術來達到這個目標。
該數據庫是SQL Server 2012.
我已經有一個ID序列。下面是它是如何在SQL腳本創建表:
CREATE SEQUENCE organisation_seq AS BIGINT START WITH 1 INCREMENT BY 1;
CREATE TABLE organisation
(
id BIGINT NOT NULL,
customer_number VARCHAR(50) UNIQUE,
... rest of the columns ...
);
在組織實體Bean是這樣的:
@Entity
@Table(name = "organisation")
public class Organisation {
static Logger logger = Logger.getLogger(Organisation.class.getName());
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="organisationSeq")
@SequenceGenerator(name="organisationSeq", sequenceName="organisation_seq", allocationSize=1)
private Long id;
private String customerNumber;
... rest of the Entity properties ...
大,徹底的答案,但不解決問題。我需要更改customer_number列。我認爲你不能通過IDENTITY來改變表格並添加自動增量。 –
@SteveWaters用另一種替代方法更新。 – SqlZim