2011-01-17 36 views
46

Khi tôi tạo một bảng mới cần đặt hàng do người dùng xác định, ý tưởng đầu tiên của tôi luôn đi đến tên cột là "thứ tự". Tất nhiên, điều này là không tốt vì nó là một từ dành riêng.Thay thế cho tên cột "thứ tự" trong MySQL

Bạn đặt tên cho cột đó trong mô hình db của mình ở đâu?

Cảm ơn sự giúp đỡ của bạn.

+11

+1 cho câu hỏi này, mặc dù nó đã bị đóng làm kích thích ý kiến. Đôi khi, giống như trong trường hợp này, đó là trong thực tế thực tế ý kiến ​​của các nhà phát triển có kinh nghiệm được tìm kiếm. –

Trả lời

41

Tôi thường sử dụng các từ đồng nghĩa đơn giản, "sắp xếp" chẳng hạn.

4

SQL Server, ít nhất, cho phép bạn sử dụng từ khóa nếu được đặt trong dấu ngoặc vuông, mặc dù tôi đồng ý đó không phải là một ý tưởng tuyệt vời.

Tôi tin rằng lần cuối cùng tôi làm điều này, tôi đã sử dụng SortOrder cho tên. Tuy nhiên, tôi thường sử dụng các tiền tố phản ánh bảng như UsrSortOrder vì vậy đó không phải lúc nào cũng là một vấn đề.

+0

Vấn đề là tôi sử dụng JPA và nó phát điên có hoặc không có dấu ngoặc đơn:/Tôi phải thay đổi tên. Nhưng cuối cùng nó không phải là xấu như vậy kể từ khi từ này được dành riêng;). Cảm ơn bạn đã trả lời của bạn –

+0

Tôi đoán JPA sẽ thoải mái hơn nếu bạn sử dụng tiêu chuẩn ANSI để trích dẫn tên: dấu ngoặc kép. Những dấu ngoặc đó là một "đặc sản" của SQL Server nhưng trích dẫn chuẩn cũng được hiểu (không biết liệu có cần thay đổi cấu hình cho điều đó) hay không. Vì vậy, "thứ tự" có thể thực sự hoạt động. Nhưng tôi vẫn khuyên bạn nên tìm một tên khác. Phải trích dẫn tên đối tượng sẽ dẫn đến các vấn đề cuối cùng. –

3

Trong ANSI/ISO SQL, dấu ngoặc kép phân tách các từ khóa khi được sử dụng làm tên cột; xâu được giới hạn bởi dấu nháy đơn:

select "from" = 'from' from foo 

Microsoft SQL Server cho phép việc sử dụng các dấu ngoặc vuông thay cho dấu ngoặc kép cũng như:

select [from] = 'from' from foo 

Nhưng một trong hai cách, nó làm cho một mớ hỗn độn khủng khiếp của mã của bạn (hãy thử đọc phần bên trên cho ai đó.)

Nếu tôi cần một cột để sắp xếp kết quả, tôi thường gọi nó là 'sequence_number' hoặc 'sort_sequence'.

8

Chỉ cần thêm dấu tick 'xung quanh những cái tên của các bảng và các cột của bạn, ví dụ:

CREATE TABLE `order` 
    (
     `order#` char(4) NOT NULL, 
     `ord_date` DATE, 
     Primary Key (`order#`) 
) 
    ENGINE=InnoDB; 

Điều này cho phép ký tự đặc biệt và các từ khóa được sử dụng, ít nhất là các công trình này cho phiên bản hiện tại của MySql .

+0

Tôi biết, nhưng tôi đang sử dụng Ebean và vì lý do tôi không thể hiểu được, nó không thêm những dấu tích đó, vì vậy nếu tôi đặt tên cho một cột bằng cách sử dụng một từ khóa dành riêng, nó không thành công. –

+0

+1 Cảm ơn sự giúp đỡ của bạn. – Jignesh

51

Tôi sử dụng "vị trí" thay cho "thứ tự"

+6

+1 'ORDER BY position' chắc chắn đọc tốt hơn' ORDER BY sort' - và "sort" có thể bị nhầm lẫn với "type". – rybo111

+0

Vấn đề với 'vị trí' là nó được coi là một từ dành riêng trong một số hương vị SQL. xem [this] (https://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html). – Mustafa

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