2012-05-17 31 views
5

ai đó có thể vui lòng giải thích ý nghĩa của:mã kích hoạt mới và cũ

:new:old trong mã kích hoạt.

+0

Đây có phải là bài tập về nhà không? – Sparky

+0

cung cấp cho chúng tôi một số ngữ cảnh – keyser

+0

đó là một câu hỏi sửa đổi tôi đang chuẩn bị, bạn phải trả lời câu hỏi "có nghĩa là gì: mới và: cũ trong mã kích hoạt?" – user1300580

Trả lời

24

:new:old là các bản ghi giả cho phép bạn truy cập các giá trị mới và cũ của các cột cụ thể. Nếu tôi có một bảng

CREATE TABLE foo (
    foo_id NUMBER PRIMARY KEY, 
    bar VARCHAR2(10), 
    baz VARCHAR2(10) 
); 

và tôi chèn một hàng

INSERT INTO foo(foo_id, bar, baz) 
    VALUES(1, 'Bar 1', 'Baz 1'); 

sau đó trong một row-level trước khi kích hoạt chèn

:new.foo_id will be 1 
:new.bar will be 'Bar 1' 
:new.baz will be 'Baz 1' 

khi

:old.foo_id will be NULL 
:old.bar will be NULL 
:old.baz will be NULL 

Nếu bạn sau đó cập nhật hàng đó

UPDATE foo 
    SET baz = 'Baz 2' 
WHERE foo_id = 1 

sau đó trong một trước khi cập nhật row-level kích hoạt

:new.foo_id will be 1 
:new.bar will be 'Bar 1' 
:new.baz will be 'Baz 2' 

khi

:old.foo_id will be 1 
:old.bar will be 'Bar 1' 
:old.baz will be 'Baz 1' 

Nếu tôi sau đó xóa các hàng

DELETE FROM foo 
WHERE foo_id = 1 

sau đó liên tiếp trước khi xóa kích hoạt cấp,

:new.foo_id will be NULL 
:new.bar will be NULL 
:new.baz will be NULL 

khi

:old.foo_id will be 1 
:old.bar will be 'Bar 1' 
:old.baz will be 'Baz 2' 
2

Trong một cò kỷ lục :old chứa các giá trị trước khi thực hiện báo cáo kết quả kích hoạt, những kỷ lục :new chứa các giá trị sau khi thực hiện.

3

Trong Plain English:

Họ là bí danh cho phép bạn truy cập thông tin từ cách một cột là (cũ) và làm thế nào nó sẽ được (mới).

From Oracle documentation:

Cũ và mới giá trị có sẵn trong cả trước và sau hàng gây nên. Giá trị cột mới có thể được chỉ định trong kích hoạt BEFORE hàng, nhưng không được kích hoạt trong lần kích hoạt hàng SAU (vì câu lệnh kích hoạt có hiệu lực trước khi kích hoạt hàng AFTER được kích hoạt). Nếu hàng BEFORE kích hoạt thay đổi giá trị của new.column, thì kích hoạt hàng SAU được kích hoạt bởi cùng một câu lệnh sẽ thấy thay đổi được chỉ định bởi kích hoạt hàng TRƯỚC.

Tên tương quan cũng có thể được sử dụng trong biểu thức Boolean của mệnh đề WHEN. Dấu hai chấm phải đứng trước các vòng loại cũ và mới khi chúng được sử dụng trong thân của trình kích hoạt, nhưng dấu hai chấm không được phép khi sử dụng các vòng loại trong mệnh đề WHEN hoặc tùy chọn REFERENCING.

2

giá trị old là giá trị before the change và giá trị newvalue to be changed, vì vậy ví dụ, trên một update set col1=10, 10 là giá trị new và giá trị đó là hiện tại trong cột là cũ trên.

Khi chèn, không có giá trị cũ, chỉ mới và khi xóa không có giá trị mới, chỉ cũ

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