Hiển thị kết quả từ 1 đến 7 / 7

Chủ đề: alter table ???

  1. #1
    Tham gia
    30-04-2004
    Bài viết
    49
    Like
    0
    Thanked 0 Times in 0 Posts

    Câu hỏi, cần giúp đỡ alter table ???

    Cho mình hỏi nếu một cột đã được định nghĩa khóa chính rồi, thì có thể thay đổi kiểu dữ liệu, hay tăng dung lượng dữ liệu của cột đó lên không ?

    Ví dụ từ varchar muốn chuyển thành int đó ? Hay là phải drop cái khóa
    chính đó đi rồi mới change được ?

    Mình muốn là làm trong query analyzer đó, câu lệnh ra sao ? bởi mình làm toàn bị báo lỗi là

    "Server: Msg 5074, Level 16, State 8, Line 1
    The object 'customer_custno_pk' is dependent on column 'custno'.
    Server: Msg 4922, Level 16, State 1, Line 1
    ALTER TABLE ALTER COLUMN custno failed because one or more objects access this column."

    Câu lệnh của mình là : "alter table customer alter column custno int not null"

    CustNo của mình đã được định nghĩa khóa chính.

    Khi mình drop cái khóa chính này đi, run lại câu lệnh trên thì lại ok.
    Hoặc từ varchar mà là tăng lưu trữ lên thì được, còn giảm đi thì không được varchar(10) --> varchar(15) --> ok nhưng ngược lại thì lại bị báo lỗi trên
    Nhưng nếu muốn không phải drop thì làm thế nào ?
    Được sửa bởi next100years lúc 16:25 ngày 20-05-2005
    Quote Quote

  2. #2
    Tham gia
    06-02-2003
    Location
    vùng sâu vùng xa
    Bài viết
    549
    Like
    1
    Thanked 6 Times in 6 Posts
    Phải drop cái PK trước rồi mới đổi được !

    Còn từ varchar(15)->varchar(10): nếu table chưa có data thì OK, còn nếu có Data rồi thì phải tạo 1 column tạm rồi move data qua đó.

    Nếu dùng EM thì nó sẽ tạo 1 table tạm, move hết data qua đó rồi tạo table mới sau đó move data trở lại dùm mình !

  3. #3
    Tham gia
    30-04-2004
    Bài viết
    49
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạn làm ơn cho mình hỏi luôn , mình toàn bị gặp lỗi này :

    "Server: Msg 547, Level 16, State 1, Line 1
    ALTER TABLE statement conflicted with COLUMN FOREIGN KEY constraint 'product_taskno_fk'. The conflict occurred in database 'BTSQL', table 'product', column 'id'."

    Câu lệnh của mình là :

    "alter table programmer add constraint product_taskno_fk foreign key (taskno)
    references product(id)
    go"

    Trong đó "id" mình để ràng buộc là UNIQUE , còn taskno thì không phải là khóa chính hay gì cả.

  4. #4
    Tham gia
    30-04-2004
    Bài viết
    49
    Like
    0
    Thanked 0 Times in 0 Posts
    Hix...không ai trả lời sao ??? (
    Các bác làm ơn cho em hỏi thêm là có thể alter table một cột kiểu int, not null hay null chưa có ràng buộc gì cả, giờ em muốn cho nó là identity hoặc default mà không được. toàn bị báo lỗi "The name 'active' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted."

    Nếu ngay từ lúc create table thì tạo được default hoặc identity , nhưng giả sử lúc tạo bảng chưa để default hoặc identity , sau đó mới muốn có thì làm thế nào ??? Em làm toàn bị báo lỗi hi***

  5. #5
    Tham gia
    13-06-2003
    Location
    TP. Hồ Chí Minh
    Bài viết
    423
    Like
    0
    Thanked 0 Times in 0 Posts

    Thông tin

    Quote Được gửi bởi next100years
    Bạn làm ơn cho mình hỏi luôn , mình toàn bị gặp lỗi này :

    "Server: Msg 547, Level 16, State 1, Line 1
    ALTER TABLE statement conflicted with COLUMN FOREIGN KEY constraint 'product_taskno_fk'. The conflict occurred in database 'BTSQL', table 'product', column 'id'."

    Câu lệnh của mình là :

    "alter table programmer add constraint product_taskno_fk foreign key (taskno)
    references product(id)
    go"

    Trong đó "id" mình để ràng buộc là UNIQUE , còn taskno thì không phải là khóa chính hay gì cả.
    Lỗi này xảy ra khi bạn tạo một khóa quan hệ sai, sai có thể:
    - Field ID của product và field taskno của programmer không tương thích kiểu.
    - Một trong hai field ID và taskno có dữ liệu không tương thích với field kia.
    Bạn nên kiểm tra lại dữ liệu của hai table này xem. Có thể dùng EM để kiểm tra.

  6. #6
    Tham gia
    30-04-2004
    Bài viết
    49
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi next100years
    Các bác làm ơn cho em hỏi thêm là có thể alter table một cột kiểu int, not null hay null chưa có ràng buộc gì cả, giờ em muốn cho nó là identity hoặc default mà không được. toàn bị báo lỗi "The name 'active' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted."

    Nếu ngay từ lúc create table thì tạo được default hoặc identity , nhưng giả sử lúc tạo bảng chưa để default hoặc identity , sau đó mới muốn có thì làm thế nào ??? Em làm toàn bị báo lỗi hi***
    Còn câu này nữa bác trả lời dùm em với ???

  7. #7
    Tham gia
    13-06-2003
    Location
    TP. Hồ Chí Minh
    Bài viết
    423
    Like
    0
    Thanked 0 Times in 0 Posts

    Thông tin

    Quote Được gửi bởi next100years
    Còn câu này nữa bác trả lời dùm em với ???
    Trong ALTER TABLE bạn thêm mệnh đề ADD CONSTRANT để tạo thêm các ràng buộc hoặc các giá trị mặc định.
    Bạn mở Help của SQL server ra coi thêm phần này.

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •