Máy tínhCơ sở dữ liệu

"Cạm bẫy" DML-Team Cập nhật MySQL

Mỗi lập trình viên, những người đã phải làm việc với cơ sở dữ liệu, phải đối mặt với DML-nhà khai thác (dịch từ Tiếng Anh - .. "Data Manipulation Language"), chẳng hạn như Select, Insert, Delete Update. MySQL-vận chuyển cũng sử dụng kho vũ khí của tất cả các lệnh trên.

Những tuyên bố này một cách logic nói về việc bổ nhiệm ông - hồ sơ chọn, chèn các giá trị mới, cập nhật dữ liệu hiện có, hoàn chỉnh, hoặc phù hợp với các điều kiện quy định, việc loại bỏ các thông tin trong cơ sở dữ liệu. Các tài liệu đào tạo lý thuyết được mô tả một cách chi tiết các nguyên tắc hoạt động của mỗi lệnh và cú pháp của họ, nhưng không nơi nào tìm thấy tài liệu tham khảo để những khó khăn có thể phát sinh trong thực tế quá trình sử dụng. Tài liệu này sẽ được dành cho việc xem xét của một số trong số họ.

Ngắn gọn về DML-báo cáo (Insert)

Trước khi tiếp tục, nó là cần thiết một lần nữa gọi lại biết thêm chi tiết về mục đích của từng chức năng. Chúng tôi sẽ có hai nhà khai thác quan tâm đến chi tiết hơn: Insert Cập nhật, bởi vì nó phụ thuộc vào họ lấy được những khó khăn chính trong việc xử lý một lượng lớn dữ liệu.

Bạn phải bắt đầu với Insert lệnh, và sau đó dần dần chuyển sang Update. hệ thống MySQL, giống như bất kỳ cơ sở dữ liệu hiện đại khác, sử dụng các hoạt động Insert để thêm kỷ lục mới cho các bảng hiện có cơ sở dữ liệu. Cú pháp của hoạt động này là rất đơn giản và dễ hiểu. Nó chứa một danh sách các lĩnh vực này sẽ được thực hiện để các giá trị, điểm đến - tên của bảng - và ngay lập tức đưa ra một danh sách các dữ liệu. Mỗi lần bạn thực hiện các cơ sở dữ liệu Insert sẽ được cập nhật với các giá trị mới.

báo cáo cập nhật

Tuy nhiên, trong thực tế, khá thường xuyên có những tình huống mà đối với một số bộ dữ liệu một hoặc nhiều giá trị thuộc tính được cập nhật. Ví dụ, một tình huống mà công ty đã cải cách với đổi tên nữa của các phòng ban chính. Trong trường hợp này nó là cần thiết để thực hiện thay đổi cho từng bộ phận. Nếu chỉ thay đổi tên, sau đó các vấn đề có thể được giải quyết rất nhanh chóng. Tuy nhiên, nếu việc thay đổi mã hóa của mỗi thành phần của toàn bộ sản xuất, mà thường phục vụ như là khóa chính, có nghĩa là, đến lượt nó, đòi hỏi phải thay đổi thông tin và cho từng nhân viên.

Cập nhật - DML-nhà điều hành có thể được áp dụng để giải quyết vấn đề này. MySQL- máy chủ, hoạt động với một số lượng lớn các mục, với sự giúp đỡ của một câu lệnh cập nhật, hãy thực hiện các truy vấn yêu cầu và giải quyết vấn đề. Nhưng đôi khi xảy ra trong bản cập nhật không phải là khá rõ ràng và khó giải thích phức tạp. Đó là những gì gây ra sự khó khăn của các hồ sơ được cập nhật, sẽ được thảo luận thêm.

Có gì chút đã nói về mặt lý thuyết ...

Cập nhật đội, như đã nói ở trên, được sử dụng để cập nhật bản ghi hiện có trong bảng. Nhưng trong thực tế, khách hàng truy cập vào các máy chủ cơ sở dữ liệu không phải luôn luôn được biết đến, có một tập hợp các dữ liệu trong các bảng hay không. Sơ bộ kiểm tra sự sẵn có của dữ liệu trong cơ sở dữ liệu cho việc cập nhật tiếp theo của kết quả trong thời gian và lãng phí khả năng máy chủ.

Để tránh điều này, trong một cấu trúc cơ sở dữ liệu MySQL đặc biệt - Chèn * Update, trong đó chèn hoặc cập nhật có thể được thực hiện độc lập với nhau. Đó là khi bảng có một mục nhập cho một điều kiện đặc biệt, sẽ được cập nhật. Nếu các điều kiện được xem xét, dữ liệu sẽ không được tìm thấy, MySQL-server có khả năng thực hiện cập nhật dữ liệu theo yêu cầu.

Cập nhật dữ liệu khi có bản sao

Một thành phần quan trọng của Phụ trang này - yêu cầu đến hệ thống quản lý cơ sở dữ liệu MySQL - «On Duplicate chính Update» prefix. Cú pháp hoàn chỉnh các truy vấn như sau: «chèn vào test_table (employer_id, tên) giá trị ( 1, 'Abramov') trên khóa trùng lặp update LAST_MODIFIED = NOW (); ".

một yêu cầu như vậy có thể được sử dụng để ghi lại những hành động của, ví dụ, xác định doanh nghiệp thời gian giao đoạn sau bằng cách đếm khoảng thời gian và sự chậm trễ phát hiện. Để không làm cho bàn một vài hồ sơ, đủ cho mỗi nhân viên để giữ hồ sơ với cập nhật liên tục. Nó là một thiết kế kiểm tra trùng lặp cho phép nó.

Thực ra vấn đề ...

Xét ví dụ trên của hành động nhân viên đăng ký tại lối vào, như vấn đề là việc sử dụng samouvelichivayuschihsya (tự động _ increment) lĩnh vực, mà thường được sử dụng để điền vào các giá trị khóa chính (primary _ key). Nếu bạn đang sử dụng Cập nhật lệnh MySQL trong thiết kế với Insert auto _ tăng, lĩnh vực này không ngừng tăng lên.

Tương tự như vậy, tất cả mọi thứ xảy ra khi sử dụng một cấu trúc thay thế trong trường hợp phát hiện trùng lặp. "Auto-increment" giá trị được tăng lên ngay cả trong trường hợp nó không phải là cần thiết. Bởi vì điều này, các vấn đề phát sinh giá trị vượt qua tràn hoặc dãy số, mà sau đó dẫn đến trục trặc của hệ thống quản lý cơ sở dữ liệu.

Nhiều khả năng vấn đề

Mô tả các vấn đề phải được xem xét Web-phát triển, vì nó là phổ biến nhất trong các hệ thống đa người dùng (các trang web, cổng thông tin, và vân vân. P.), Khi hệ thống được thực hiện một số lượng lớn các thủ tục Insert cập nhật MySQL.

PHP - kháng cáo lên cơ sở rất thường xuyên thực hiện. Vì vậy, để đạt được lợi nhuận tối đa, định nghĩa là auto_increment, xảy ra nhanh chóng, và trong việc phân tích những khó khăn gặp phải để thiết lập những lý do sẽ không hoạt động.

Do đó, các nhà phát triển được khuyến khích để được chú ý đến việc sử dụng các thiết kế trên khóa trùng lặp trong bản cập nhật lệnh mysql. chọn - truy vấn khi truy cập vào máy chủ cơ sở dữ liệu sẽ làm việc mà không có lỗi, nhưng việc bổ sung các hồ sơ mới để các cơ sở dữ liệu là đầy những tình huống khó chịu dẫn trước tương lai đến những vấn đề nghiêm trọng. Ngoài ra, nó được khuyến khích cho các lĩnh vực tự động tăng ban đầu kiểm tra hồ sơ của họ, và sau đó giữ chúng được cập nhật.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 vi.unansea.com. Theme powered by WordPress.