2011-08-30 37 views
5

Tôi có một tuyên bố UPDATE trong ABAP trông giống như:Cập nhật bản Tuyên Bố trong ABAP không làm việc

UPDATE zicstt099 FROM TABLE lt_zicstt099

Các Update là không mỗi lần với sy-subrc eq 4.

Cơ sở dữ liệu Bảng ZICSTT099 có ba khóa chính: WEB_USER_ID & EMAIL_ID cùng với trường MANDT.

Tôi đang cố gắng thay đổi giá trị EMAIL_ID nhưng cùng không nhận được Cập nhật.

Vui lòng trợ giúp.

Trả lời

7

Bạn không thể thay đổi các trường khóa chính bằng câu lệnh UPDATE <target> FROM <wa>.UPDATE <target> FROM TABLE <itab>. vì chúng sử dụng khóa chính để tra cứu (các) bản ghi mà chúng phải cập nhật.

Thay vào đó, hãy sử dụng câu lệnh UPDATE <target> SET <set1> ... WHERE ....

Bạn có thể tìm thấy những chi tiết cụ thể hơn ở đây: http://help.sap.com/abapdocu_70/en/ABAPUPDATE_SOURCE.htm#&[email protected]@

0

Bạn không thể 'thay đổi' lĩnh vực chủ chốt trong cơ sở dữ liệu. Bạn có thể xóa mục nhập ban đầu của mình và chèn mục nhập mới bằng phím khác. Nhưng bạn không thể thay đổi trường khóa. (Tôi không thể kiểm tra thực tế, nếu modify đang làm nó trên của riêng nó

Nếu bạn phải thay đổi một lĩnh vực quan trọng, bạn nên suy nghĩ về DB-định nghĩa của bạn

Thông tin thêm về việc thay đổi các lĩnh vực then chốt:.. Can we update primary key values of a table?

+2

Điều này là sai, ít nhất là trong Open SQL. Xem tài liệu được trích dẫn bởi René. – vwegert

0

Nếu sy-subrc = 4, thì ít nhất một dòng không thể thay đổi, vì không tìm thấy dòng thích hợp hoặc do thay đổi sẽ tạo ra một đường dẫn đến các mục nhập kép trong khóa chính hoặc chỉ mục phụ duy nhất trong bảng cơ sở dữ liệu.

Sta tement UPDATE đặt sy-dbcnt thành số lượng các dòng đã thay đổi.

-1

hi tôi đã cố gắng để tạo ra bàn với các phím của bạn như đã nói, tôi khuyên bạn sử dụng cú pháp dưới đây

update lt_zicstt099 set email_id = 'some value' where WEB_USER_ID = 'some web id'. 

Để kiểm tra xem bảng được cập nhật, bạn có thể sử dụng sy-dbcnt để biết số lượng dòng được cập nhật. nếu bạn vẫn gặp sự cố, vui lòng nhận xét bên dưới

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