Cập nhật, chèn và ? ký tự trong DBEXECUTE

Chủ đề này mô tả bản cập nhật và chèn hành vi của DBEXECUTE và sử dụng giá trị ? ký tự.

Suất cảng bạn đã có một bảng SQL trống được gọi là các mục với hai cột: ID và tên. ID là khóa chính.

Bạn có công thức này trong ô không được bảo vệ:

=DBEXECUTE("configdb", "SELECT items.id,items.name FROM items WHERE ID=1","INSERT into items (ID,Name) VALUES (1,?)")

Ở chế độ Xem, bạn xác định 1 trong ô và nhấn Enter.

Do bảng trống và không chứa ID có giá trị 1, việc thực thi câu lệnh Chèn. Câu lệnh Chèn tạo hàng này trong bảng:

Số hàng ID Tên
1 1 1

Bằng cách nhập 1, bạn đã chỉ định ID. Bạn? ký tự gây ra giá trị này được nhập vào cột Tên.

Bạn giờ xác định 2 trong ô. Bởi vì ID 1 hiện tại, câu lệnh Chèn không được thực hiện. Thay vào đó, hàng có chứa ID 1 được cập nhật như hiển thị trong bảng này:

Số hàng ID Tên
1 2 1

Do câu lệnh Chèn không được thực thi, cột Tên không được cập nhật.

Bạn bây giờ bạn xác định 3 trong ô. Bởi vì ID 1 không hiển thị, câu lệnh Chèn được thực thi và một hàng mới được thêm vào:

Số hàng ID Tên
1 1 3
2 2 1

Giá trị 1 và 3 kết quả từ một phần của công thức: VALUES (1,?).

Nếu bây giờ bạn chỉ định ID 4, 1 sẽ trở lại và hàng có chứa ID 1 sẽ được cập nhật.

Số hàng ID Tên
1 2 1
2 4 3

Nếu bạn xác định 5 hàng khác được thêm vào:

Số hàng ID Tên
1 1 5
2 2 1
3 4 3