2009-07-17 39 views
9

Chúng tôi có một bảng có Khóa chính được điền bằng cách kích hoạt trên bảng - trình kích hoạt nhận số thứ tự tiếp theo từ chuỗi mà chúng tôi đã tạo cho bảng và sử dụng nó cho giá trị của khóa khi chèn. Bây giờ chúng tôi muốn có thể trả về giá trị đó trong quy trình chèn của chúng tôi (PL \ SQL), tương tự như chọn @@ scope_identity trong SQL Server. Tôi đã googling cả ngày và về cơ bản đến với không có gì - bất cứ ai đã thành công với điều này trước khi?Oracle - trả về giá trị khóa mới được chèn

Cảm ơn

Trả lời

19

Tôi không biết nếu nó làm việc với trigger nhưng mệnh đề TRỞ LẠI có thể là những gì bạn đang tìm kiếm:

INSERT INTO my_table (col_1, col_2) 
    VALUES ('foo', 'bar') 
    RETURNING pk_id INTO my_variable; 
+0

Có - điều này có vẻ thú vị và tôi sẽ thử. –

+0

Làm việc như một nhà vô địch với cò súng! Tôi hoàn toàn nhận được giá trị khóa mới được tạo bởi trình kích hoạt trở lại mỗi lần. Cảm ơn. –

+0

Đã cho tôi một lỗi nói "thiếu từ khóa" ... nhưng đã cố gắng làm điều này với PHP. –

0

Tôi nghĩ bạn đang tìm kiếm Tuyên bố có thể gọi. Đây là javadoc nếu bạn đang cố gắng truy cập nó từ Java.

+0

Điều đó sẽ làm việc tốt nếu chúng ta có thể cư trú trong các tham số đầu ra với chìa khóa mới được tạo ra trong PL \ SQL - đó là cơ bản những gì tôi yêu cầu trong câu hỏi. Chìa khóa được điền trong trình kích hoạt chèn - bây giờ làm thế nào để lấy nó trong một thủ tục được lưu trữ chèn? –

0

lý do tại sao không chỉ trả về the_sequence.currval?

+0

Thật không may - trình tự được sử dụng bởi nhiều hơn một bảng. –

Các vấn đề liên quan