Tôi có một truy vấn cập nhật trong MySQL và tôi muốn trả về đúng hay sai dựa trên việc truy vấn cập nhật của tôi có được thực thi hay không. Có cách nào chúng ta có thể tìm thấy liệu truy vấn cập nhật có được thực thi không?
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
IF [queryUpdated] THEN
SELECT 1 AS updated;
ELSE
SELECT 0 AS updated;
END IF;
hỏi ngày 14 tháng 1 lúc 16:30Jan 14 at 16:30
3
Tôi nghi ngờ bạn muốn chức năng
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
8UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
Đã trả lời ngày 14 tháng 1 lúc 17:25Jan 14 at 17:25
Mustacciomustacciomustaccio
22.8K20 Huy hiệu vàng52 Huy hiệu bạc68 Huy hiệu Đồng20 gold badges52 silver badges68 bronze badges
1
Làm cách nào để biết khi cập nhật MySQL thành công so với dữ liệu được cập nhật thực sự?
Example:
TABLE
id city_name
1 Union
2 Marthasville
Nếu tôi chạy như sau:
$data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
Điều này sẽ trả về
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
9 mỗi khi câu lệnh cập nhật thành công, nhưng sai khi không có hàng thực sự được cập nhật.Tôi cần nó trả về
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
9 mỗi khi câu lệnh cập nhật được thực hiện thành công ngay cả khi nó không thực sự thay đổi bất kỳ bản ghi nào.
Hakre
Phim thương hiệu vàng 188K50421 Huy hiệu bạc810 Huy hiệu đồng50 gold badges421 silver badges810 bronze badges
hỏi ngày 9 tháng 9 năm 2011 lúc 22:45Sep 9, 2011 at 22:45
Hãy xem mysql_affected_rows []
Nó sẽ cho bạn biết nếu bất cứ điều gì thực sự được cập nhật thay vì không có gì được cập nhật thành công dẫn đến sự trở lại của sự thật.
Php.net nói:
mysql_affected_rows[]
Trả về số lượng hàng bị ảnh hưởng khi thành công và -1 nếu truy vấn cuối cùng thất bại.
Bạn có thể sử dụng những điều sau đây để đạt được kết quả mong muốn của mình:
if[$this->db->affected_rows[] >= 0]{ }
Đã trả lời ngày 9 tháng 9 năm 2011 lúc 22:59Sep 9, 2011 at 22:59
472084472084472084
17.6K10 Huy hiệu vàng61 Huy hiệu bạc81 Huy hiệu đồng10 gold badges61 silver badges81 bronze badges
5
Sau đó, bạn sẽ sử dụng mysql_query:
Các câu lệnh SQL, chèn, cập nhật, xóa, thả, v.v., mysql_query [] trả về đúng khi thành công hoặc sai về lỗi.
Đơn giản như thế này:
$result = $this->db->update['table', $data];
if[$result]
{
//without error even no row updated
} else {
}
Đã trả lời ngày 9 tháng 9 năm 2011 lúc 23:17Sep 9, 2011 at 23:17
lnguyen55lnguyen55lnguyen55
7376 Huy hiệu bạc16 Huy hiệu Đồng6 silver badges16 bronze badges
2
13.2.15 & NBSP; Tuyên bố cập nhật
TABLE
id city_name
1 Union
2 Marthasville
1 là một câu lệnh DML sửa đổi các hàng trong bảng.Một câu lệnh
TABLE
id city_name
1 Union
2 Marthasville
1 có thể bắt đầu với mệnh đề TABLE
id city_name
1 Union
2 Marthasville
3 để xác định các biểu thức bảng phổ biến có thể truy cập trong TABLE
id city_name
1 Union
2 Marthasville
1. Xem phần & nbsp; 13.2.17, với [biểu thức bảng phổ biến].Cú pháp đơn bàn:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
Cú pháp nhiều bàn:
UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET assignment_list
[WHERE where_condition]
Đối với cú pháp bảng đơn, câu lệnh
TABLE
id city_name
1 Union
2 Marthasville
1 cập nhật các cột của các hàng hiện có trong bảng được đặt tên với các giá trị mới. Mệnh đề TABLE
id city_name
1 Union
2 Marthasville
6 cho biết cột nào cần sửa đổi và các giá trị chúng nên được đưa ra. Mỗi giá trị có thể được đưa ra dưới dạng biểu thức hoặc từ khóa TABLE
id city_name
1 Union
2 Marthasville
7 để đặt một cột một cách rõ ràng thành giá trị mặc định của nó. Điều khoản TABLE
id city_name
1 Union
2 Marthasville
8, nếu được đưa ra, chỉ định các điều kiện xác định các hàng nào sẽ cập nhật. Không có mệnh đề TABLE
id city_name
1 Union
2 Marthasville
8, tất cả các hàng được cập nhật. Nếu mệnh đề $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
0 được chỉ định, các hàng được cập nhật theo thứ tự được chỉ định. Điều khoản $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
1 đặt giới hạn về số lượng hàng có thể được cập nhật.Đối với cú pháp nhiều bảng,
TABLE
id city_name
1 Union
2 Marthasville
1 cập nhật các hàng trong mỗi bảng có tên trong $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
3 đáp ứng các điều kiện. Mỗi hàng phù hợp được cập nhật một lần, ngay cả khi nó phù hợp với các điều kiện nhiều lần. Đối với cú pháp nhiều bảng, không thể sử dụng $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
0 và $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
1.Đối với các bảng được phân vùng, cả hai hình thức đơn và nhiều bảng của câu lệnh này đều hỗ trợ việc sử dụng mệnh đề
$data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
6 như một phần của tham chiếu bảng. Tùy chọn này lấy một danh sách một hoặc nhiều phân vùng hoặc các phần phụ [hoặc cả hai]. Chỉ các phân vùng [hoặc các phần phụ] được liệt kê mới được kiểm tra các trận đấu và một hàng không có trong bất kỳ phân vùng hoặc phân vùng nào này không được cập nhật, cho dù nó có thỏa mãn $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
7 hay không.Ghi chú
Không giống như trường hợp khi sử dụng
$data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
6 với câu lệnh $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
9 hoặc if[$this->db->affected_rows[] >= 0]{ }
0, một câu lệnh if[$this->db->affected_rows[] >= 0]{ }
1 có giá trị khác được coi là thành công ngay cả khi không có hàng trong các phân vùng được liệt kê [hoặc phân nhóm] khớp với $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
7.Để biết thêm thông tin và ví dụ, xem Phần & NBSP; 24.5, Lựa chọn phân vùng.
$data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
7 là một biểu thức đánh giá đúng cho mỗi hàng được cập nhật. Đối với cú pháp biểu thức, xem phần & nbsp; 9.5, biểu thức của Hồi giáo.
$data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
3 và $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
7 được chỉ định như được mô tả trong Phần & NBSP; 13.2.11, Tuyên bố chọn.Bạn chỉ cần đặc quyền
TABLE
id city_name
1 Union
2 Marthasville
1 cho các cột được tham chiếu trong một TABLE
id city_name
1 Union
2 Marthasville
1 thực sự được cập nhật. Bạn chỉ cần đặc quyền if[$this->db->affected_rows[] >= 0]{ }
8 cho bất kỳ cột nào được đọc nhưng không được sửa đổi.Câu lệnh
TABLE
id city_name
1 Union
2 Marthasville
1 hỗ trợ các công cụ sửa đổi sau:Với công cụ sửa đổi
0, việc thực hiện$result = $this->db->update['table', $data]; if[$result] { //without error even no row updated } else { }
1 bị trì hoãn cho đến khi không có máy khách nào khác đọc từ bảng. Điều này chỉ ảnh hưởng đến các công cụ lưu trữ chỉ sử dụng khóa cấp bảng [chẳng hạn nhưTABLE id city_name 1 Union 2 Marthasville
2,$result = $this->db->update['table', $data]; if[$result] { //without error even no row updated } else { }
3 và$result = $this->db->update['table', $data]; if[$result] { //without error even no row updated } else { }
4].$result = $this->db->update['table', $data]; if[$result] { //without error even no row updated } else { }
Với công cụ sửa đổi
5, câu lệnh Update không hủy bỏ ngay cả khi lỗi xảy ra trong quá trình cập nhật. Các hàng mà xung đột khóa trùng lặp xảy ra trên một giá trị khóa duy nhất không được cập nhật. Các hàng được cập nhật lên các giá trị sẽ gây ra lỗi chuyển đổi dữ liệu được cập nhật lên các giá trị hợp lệ gần nhất thay thế. Để biết thêm thông tin, hãy xem ảnh hưởng của việc bỏ qua đối với việc thực thi tuyên bố.$result = $this->db->update['table', $data]; if[$result] { //without error even no row updated } else { }
Các câu lệnh
$result = $this->db->update['table', $data];
if[$result]
{
//without error even no row updated
} else {
}
6, bao gồm cả những câu lệnh có mệnh đề $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
0, được gắn cờ là không an toàn cho sao chép dựa trên tuyên bố. [Điều này là do thứ tự mà các hàng được cập nhật xác định các hàng nào bị bỏ qua.] cách thức. .Nếu bạn truy cập một cột từ bảng để được cập nhật trong một biểu thức,
TABLE
id city_name
1 Union
2 Marthasville
1 sử dụng giá trị hiện tại của cột. Ví dụ: câu lệnh sau đặt UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
0 thành một so với giá trị hiện tại của nó:UPDATE t1 SET col1 = col1 + 1;
Bài tập thứ hai trong câu lệnh sau đặt
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
1 cho giá trị hiện tại [cập nhật] UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
0, không phải là giá trị UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
0 gốc. Kết quả là UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
0 và UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
1 có cùng giá trị. Hành vi này khác với SQL tiêu chuẩn.UPDATE t1 SET col1 = col1 + 1, col2 = col1;
Bài tập
TABLE
id city_name
1 Union
2 Marthasville
1 bảng đơn thường được đánh giá từ trái sang phải. Đối với các bản cập nhật nhiều bảng, không có gì đảm bảo rằng các bài tập được thực hiện theo bất kỳ thứ tự cụ thể nào.Nếu bạn đặt một cột thành giá trị hiện tại, MySQL sẽ thông báo điều này và không cập nhật nó.
Nếu bạn cập nhật một cột đã được khai báo
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
7 bằng cách đặt thành UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
8, xảy ra lỗi nếu chế độ SQL nghiêm ngặt được bật; Mặt khác, cột được đặt thành giá trị mặc định ngầm cho kiểu dữ liệu cột và số lượng cảnh báo được tăng lên. Giá trị mặc định ngầm là UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ...
9 cho các loại số, chuỗi trống [UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET assignment_list
[WHERE where_condition]
0] cho các loại chuỗi và giá trị Zero Zero đối với các loại ngày và thời gian. Xem Phần & NBSP; 11.6, Kiểu dữ liệu Giá trị mặc định.“zero” value for date and time types. See
Section 11.6,
“Data Type Default Values”. Nếu một cột được tạo được cập nhật rõ ràng, giá trị được phép duy nhất là
TABLE
id city_name
1 Union
2 Marthasville
7. Để biết thông tin về các cột được tạo, xem Phần & NBSP; 13.1.20.8, Bảng Tạo bảng và các cột được tạo.
TABLE
id city_name
1 Union
2 Marthasville
1 Trả về số lượng hàng thực sự đã thay đổi. Hàm API UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET assignment_list
[WHERE where_condition]
3 C trả về số lượng hàng được khớp và cập nhật và số lượng cảnh báo xảy ra trong thời gian TABLE
id city_name
1 Union
2 Marthasville
1.Bạn có thể sử dụng
UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET assignment_list
[WHERE where_condition]
5 để hạn chế phạm vi của TABLE
id city_name
1 Union
2 Marthasville
1. Một điều khoản $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
1 là một hạn chế phù hợp với hàng. Tuyên bố dừng lại ngay khi nó tìm thấy UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET assignment_list
[WHERE where_condition]
8 các hàng thỏa mãn mệnh đề TABLE
id city_name
1 Union
2 Marthasville
8, cho dù chúng có thực sự được thay đổi hay không.Nếu một câu lệnh
TABLE
id city_name
1 Union
2 Marthasville
1 bao gồm một mệnh đề $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
0, các hàng được cập nhật theo thứ tự được chỉ định bởi mệnh đề. Điều này có thể hữu ích trong các tình huống nhất định có thể dẫn đến lỗi. Giả sử rằng bảng UPDATE t1 SET col1 = col1 + 1;
2 chứa cột UPDATE t1 SET col1 = col1 + 1;
3 có chỉ mục duy nhất. Câu lệnh sau đây có thể thất bại với lỗi khóa trùng lặp, tùy thuộc vào thứ tự các hàng được cập nhật:UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
0Ví dụ: nếu bảng chứa 1 và 2 trong cột
UPDATE t1 SET col1 = col1 + 1;
3 và 1 được cập nhật lên 2 trước khi 2 được cập nhật lên 3, xảy ra lỗi. Để tránh vấn đề này, hãy thêm một mệnh đề $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
0 để gây ra các hàng có giá trị UPDATE t1 SET col1 = col1 + 1;
3 lớn hơn được cập nhật trước những giá trị có giá trị nhỏ hơn:UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
1Bạn cũng có thể thực hiện các hoạt động
TABLE
id city_name
1 Union
2 Marthasville
1 bao gồm nhiều bảng. Tuy nhiên, bạn không thể sử dụng $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
0 hoặc $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
1 với TABLE
id city_name
1 Union
2 Marthasville
1 nhiều bảng. Điều khoản $data = array['city_name', 'Marthasville'];
//update record 2 from Marthasville to the same thing, Marthasville.
$this->db->where['id', 2];
$this->db->update['table', $data];
if[$this->db->affected_rows[] > 0]
{
//I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
return TRUE;
}else{
return FALSE;
}
3 liệt kê các bảng liên quan đến tham gia. Cú pháp của nó được mô tả trong Phần & NBSP; 13.2.11.2, Điều khoản tham gia. Đây là một ví dụ:UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
2Ví dụ trước cho thấy một lần nối bên trong sử dụng toán tử dấu phẩy, nhưng các câu lệnh
TABLE
id city_name
1 Union
2 Marthasville
1 nhiều bảng có thể sử dụng bất kỳ loại tham gia nào được phép trong các câu lệnh if[$this->db->affected_rows[] >= 0]{ }
8, chẳng hạn như UPDATE t1 SET col1 = col1 + 1, col2 = col1;
4.Nếu bạn sử dụng câu lệnh
TABLE
id city_name
1 Union
2 Marthasville
1 nhiều bảng liên quan đến các bảng UPDATE t1 SET col1 = col1 + 1, col2 = col1;
6 có các ràng buộc chính của nước ngoài, trình tối ưu hóa MySQL có thể xử lý các bảng theo thứ tự khác với mối quan hệ cha mẹ/trẻ em của họ. Trong trường hợp này, tuyên bố thất bại và quay trở lại. Thay vào đó, hãy cập nhật một bảng duy nhất và dựa vào các khả năng UPDATE t1 SET col1 = col1 + 1, col2 = col1;
7 mà UPDATE t1 SET col1 = col1 + 1, col2 = col1;
6 cung cấp để khiến các bảng khác được sửa đổi phù hợp. Xem Phần & NBSP; 13.1.20.5, các ràng buộc khóa nước ngoài.Bạn không thể cập nhật một bảng và chọn trực tiếp từ cùng một bảng trong một truy vấn con. Bạn có thể làm việc xung quanh điều này bằng cách sử dụng bản cập nhật nhiều bàn trong đó một trong các bảng có nguồn gốc từ bảng mà bạn thực sự muốn cập nhật và đề cập đến bảng dẫn xuất bằng bí danh. Giả sử bạn muốn cập nhật một bảng có tên
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
9 được xác định bằng cách sử dụng câu lệnh được hiển thị ở đây:UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
3Để giảm giá bán lẻ của bất kỳ mặt hàng nào mà đánh dấu là 30% hoặc lớn hơn và trong số đó bạn có ít hơn một trăm trong kho, bạn có thể cố gắng sử dụng một câu lệnh
TABLE
id city_name
1 Union
2 Marthasville
1 như cái sau, sử dụng một truy vấn con trong TABLE
id city_name
1 Union
2 Marthasville
8 mệnh đề. Như được hiển thị ở đây, tuyên bố này không hoạt động:UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
4Thay vào đó, bạn có thể sử dụng bản cập nhật nhiều bảng trong đó trình điều khiển con được chuyển vào danh sách các bảng sẽ được cập nhật, sử dụng bí danh để tham khảo nó trong mệnh đề
TABLE
id city_name
1 Union
2 Marthasville
8 ngoài cùng, như thế này:UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
5Bởi vì trình tối ưu hóa cố gắng hợp nhất bảng dẫn xuất
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
03 vào khối truy vấn ngoài cùng, điều này chỉ hoạt động nếu bạn buộc vật chất hóa bảng dẫn xuất. Bạn có thể thực hiện điều này bằng cách đặt cờ UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
04 của biến hệ thống ____105 thành UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
06 trước khi chạy bản cập nhật hoặc bằng cách sử dụng gợi ý của trình tối ưu hóa UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
07, như được hiển thị ở đây:UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
6Ưu điểm của việc sử dụng gợi ý của trình tối ưu hóa trong trường hợp như vậy là nó chỉ áp dụng trong khối truy vấn nơi nó được sử dụng, do đó không cần thiết phải thay đổi giá trị của
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
05 một lần nữa sau khi thực hiện TABLE
id city_name
1 Union
2 Marthasville
1.Một khả năng khác là viết lại trình điều khiển con để nó không sử dụng
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
10 hoặc UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
11, như thế này:UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT[] > 0 THEN 1 ELSE 0 END AS updated;
7Trong trường hợp này, truy vấn con được thực hiện theo mặc định thay vì được hợp nhất, do đó không cần thiết phải vô hiệu hóa việc hợp nhất bảng dẫn xuất.