2012-01-12 24 views
5

Trong Oracle, nếu tôi cần phải khai báo gì đó với các loại giống như cột khác, tôi chỉ đơn giản là có thể sử dụng %type:Có một phiên bản MySQL của Oracle% TYPE

Create table foo(
    copiedType OTHER_TABLE.COLUMN_NAME%TYPE 
    /* yada yada yada... */ 

Có một nhà điều hành tương đương trong MySQL?

+0

Tôi không nghĩ rằng điều đó có thể xảy ra trong MySQL. –

+0

@EmmanuelN Yea ... Tôi không nghĩ vậy. Bạn biết đấy, Oracle không hoàn hảo, nhưng nó có một vài điểm yếu mà MySQL thiếu. (Điều đó nói rằng, PostGreSQL là tốt nhất của cả hai thế giới, nhưng tôi yêu DB đó) – cwallenpoole

Trả lời

2

Vâng, câu trả lời ngắn, khi nó quay ra là "không", và trong khi nó thể được giả mạo nếu bạn sẵn sàng để tạo ra một chức năng được lưu trữ (hoặc sử dụng một ngôn ngữ khác) và tạo ra bảng của bạn bằng công cụ phân tích cú pháp tùy chỉnh của riêng bạn, nó chỉ đơn giản là không có giá trị nó. C'est sera ...

0

Trừ khi tôi đang thiếu một cái gì đó thay thế chỉ với Oracle %type trong MySQL là những điều sau đây,

SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'tbl_name' AND COLUMN_NAME = 'col_name'; 
+0

Tôi chắc rằng bạn không thể sử dụng trong câu lệnh 'CREATE TABLE'. – Mchl

+0

@Dennis Tôi biết cách lấy một kiểu cột, nhưng vì tôi không muốn nghĩ về tính toàn vẹn của lược đồ (suy nghĩ là nguy hiểm), tôi muốn có cái gì đó tôi có thể sử dụng trong một khai báo biến hoặc định nghĩa cột. – cwallenpoole

+0

@cwallenpoole Có thể hiểu được. Về lý thuyết bạn sẽ có thể tạo ra một thủ tục lưu trữ đầu ra ở trên vào một biến và sau đó sử dụng biến đã nói để tạo bảng mà bạn đang cố gắng xây dựng. Tôi đã không cố gắng này mặc dù vậy không thể nói chắc chắn rằng nó sẽ làm việc. –

-1

bạn có thể sử dụng trong thủ tục như thế này

SET @field_type = (select DATA_TYPE from INFORMATION_SCHEMA.columns 
        where TABLE_NAME='users' and COLUMN_NAME='name'); 

và sau đó bạn có thể dễ dàng sử dụng @field_type biến.

+0

Như đã lưu ý trong câu trả lời của tôi, bạn không thể nhập một biến dựa trên loại khác như một phần của cú pháp 'TẠO TABLE'. Có quyền truy cập vào nó trong một biến không phải là gần như hữu ích – cwallenpoole

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