2016-12-22 16 views

cevap

3

neler Hatayı anlamadın mı? Değerin bir sıra olarak üretildiği bir "kimlik" sütununuz var. Ekleyemezsiniz. o yine de bir INSERT tüm sütunları listelemek için iyi bir fikirdir, Genel

INSERT INTO LEAVES_APPROVAL(col1, col2, col3, . . .) 
    SELECT col1, col2, col3, . . . 
    FROM REQUESTS_TEMP r 
    WHERE r.CIVIL_NUMBER = 33322 AND 
      r.REQUEST_ID = (SELECT MAX(s.REQUEST_ID) FROM REQUESTS_TEMP s); 

: Yani, tüm diğer sütunları listeler. Bu, beklenmedik hataları önler çünkü sütunlar yanlış sırada veya tablolarda farklı sayıda sütun bulunur. Hedef tablodaki (leaves_approval) sütunların

0

Bir hep Oluşturulan olarak tanımlanmıştır kimlik sütununu içerir.
Kimlik sütunları 2 modlarında oluşturulabilir - tahsis edilemez, hep Oluşturulan ve tahsis edilebileceğini varsayılan tarafından Oluşturulan.Dilerseniz, sütun modunu değiştirebilir ve daha sonra eklediğiniz gibi "olduğu gibi" yapabilirsiniz.
Bunun, kimlik sütununda çiftler oluşturabileceğini veya kısıtlamalar nedeniyle başarısız olabileceğini göz önünde bulundurun.

ALTER TABLE leaves_approval MODIFY **my_identity_column** GENERATED BY DEFAULT AS IDENTITY; 

Yoksa INSERT listeden kimlik sütunu hariç tutabilir (ama kimlik sütununda dışında tam sütun listesi belirtmek gerekir), örneğin -

INSERT INTO leaves_approval (c1,c2,c3,c4,...) 
SELECT c1,c2,c3,c4 ... 
FROM requests_temp r 
WHERE r.civil_number = 33322 
     AND r.request_id = (SELECT Max(s.request_id) 
          FROM requests_temp s) 

Database SQL Language Reference - CREATE TABLE

ALWAYS If you specify ALWAYS, then Oracle Database always uses the sequence generator to assign a value to the column. If you attempt to explicitly assign a value to the column using INSERT or UPDATE, then an error will be returned. This is the default.

BY DEFAULT If you specify BY DEFAULT, then Oracle Database uses the sequence generator to assign a value to the column by default, but you can also explicitly assign a specified value to the column. If you specify ON NULL, then Oracle Database uses the sequence generator to assign a value to the column when a subsequent INSERT statement attempts to assign a value that evaluates to NULL.

İlgili konular