2017-08-09 94 views
0

我有一個簡單的表。它有5列,其中兩個是job_numline。我希望在插入時保留行號空白,並且如果沒有其他行與該作業編號,可能使用觸發器插入「1」。如果已經有一條線job_num,那麼它會佔用下一個線路號。需要一列自動增量基於另一個觸發器

這些都是我的專欄

`job_Num` int, 
`line` int , 
`Description` nvarchar(60), 
`qty` int, 
`price` int 
+0

除非你是在一個非常繁忙的系統,您可能不希望嘗試以這種方式保持線,而是生成它在飛行中使用類似ROW_NUMBER()OVER(PARTITION BY job_NUM查詢結果時, ORDER BY someIdOrDate)如果RDBMS支持 – Matt

+0

觸發器是**高度特定於供應商的** - 所以請添加一個標籤以指定您使用的是mysql,postgresql,sql-server,oracle或'db2' - 或者其他的東西。 –

回答

0
  1. 創建序列。例如,

CREATE SEQUENCE SQ_1 START WITH 1 MAXVALUE 49999999 NOCYCLE;

  • 創建的序列的觸發。

    CREATE OR REPLACE TRIGGER TRI_1 BEFORE 
    INSERT 
        ON table_name FOR EACH ROW BEGIN 
    SELECT 
        SQ_1.NEXTVAL 
    INTO 
        :NEW.column_name 
    FROM 
        DUAL; 
    END 
    ; 
    
  • 插入一條記錄,您可以看到效果。