Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Làm sao để cột số tự động tăng(vd :stt trong bảng CSDL?

  1. #1
    Ngày gia nhập
    12 2008
    Nơi ở
    Ở đây: {}
    Bài viết
    25

    Mặc định Làm sao để cột số tự động tăng(vd :stt trong bảng CSDL?

    Mình đã làm được rồi,nhưng khi xóa 1 hàng thì mất đi cấu trúc tự động tăng dần Mình lấy vd sau:
    Có 1 bảng csdl có 1 cột đánh stt từ 1-5,mình đặt cột số tự động tăng thêm 1,rồi thêm 1 dòng dữ liệu thì nó sẽ tự động tăng lên stt=6,nhưng khi mình xóa 1 hàng ở vị trí thứ 6(vừa tạo),và thêm 1 hàng mới lập tức stt hàng mới là 7 mà ko phải là 6.Xin ai chỉ giáo vụ này với.Thanhk.
    LUÔN LUÔN LẮNG NGHE
    LÂU LÂU MỚI HIỂU

  2. #2
    Ngày gia nhập
    09 2006
    Bài viết
    5

    Mình cũng bị như bạn, sau mình chuyển sang làm thủ công luôn do ko bít cách khắc phục.
    Cách của mình là khi bắt đầu chương trình mình lấy stt lớn nhất lưu vào 1 biến đếm, sau đó ở nơi nào có thêm hoặc xóa 1 dòng thì mình cũng tăng hoặc giảm biến đếm rồi đưa giá trị biến đếm vào cột stt.

    Bạn nào bít cách làm nó tự động tăng giảm xin cho ý kiến nha. Cám ơn các bạn !

  3. #3
    Ngày gia nhập
    09 2007
    Bài viết
    724

    cái này thì phải chơi thủ công thôi bạn ạ.

    Muốn nó auto thì có cách là viết trigger cho nó thì may ra.

    lúc trước làm nó bị vậy quê lên cấm người ta xóa luôn

  4. #4
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Stt đừng lưu trữ, mỗi lần load dữ liệu lên bảng mà muốn thể hiện Stt thì thêm vào cái hàm này: ROW_NUMBER() over (Order by TekiyouID) as NoId
    trong đó TekiyouID là khóa chính và NoId là field trả về

  5. #5
    Ngày gia nhập
    10 2008
    Bài viết
    4

    có hai cách bạn .
    1/ Làm bằng Store procedures

    Ở đây tôi ví dụ một Table duong
    CREATE PROCEDURE Duong_Them
    (@TenDuong nvarchar(50),
    @Kq bit output)

    AS
    declare @MaDuong smallint
    select MaDuong from Duong where TenDuong=@TenDuong
    if @@rowcount=0
    begin
    select MaDuong from Duong
    if @@rowcount=0
    set @MaDuong=0
    else
    begin
    select @MaDuong=max(MaDuong) from Duong
    set @MaDuong=@MaDuong+1
    end
    INSERT INTO Eshop.dbo.Duong ( MaDuong, TenDuong) VALUES ( @MaDuong, @TenDuong)
    set @Kq=1
    end
    else
    set @Kq=0
    GO


    2/ Thiết kế thủ công
    Vào table click right /desgin table /cột STT kiểu dữ liệu int phía bên dưới Identity =yes /là xong
    Chúc Thành công
    0983501779 Thành
    Van_thanh881

  6. #6
    Ngày gia nhập
    03 2010
    Bài viết
    10

    Mặc định một trường tự tăng trong bảng

    ví dụ: e muốn tạo một bảng trong đó có một trường không cần nhập vào và tự tăng với giá trị khởi tạo ban đầu
    create table lop(
    malop char(10) not null primary key,
    tenlop nvarchar(20) not null,
    siso int default 0
    )
    viết như này còn thiếu không ạ, để diễn tả siso tự tăng thì viết như thế nào?

  7. #7
    Ngày gia nhập
    07 2009
    Bài viết
    9

    2/ Thiết kế thủ công
    Vào table click right /desgin table /cột STT kiểu dữ liệu int phía bên dưới Identity =yes /là xong
    Chúc Thành công
    0983501779 Thành
    Van_thanh881[/QUOTE]

    // Giả sử trước đó mình tạo một cột nhưng không set Indentity = yes , sao đó mình lưu table lại . Bây giờ mình lại muốn set Identyity = yes thì làm sao lưu lại được ( Mình Refesh lại thì Identyti của cột đó vẫn là no) .

  8. #8
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Khi muốn dùng lại mã số thì lúc xóa, người ta không xóa dòng ra khỏi bảng mà chỉ xóa dữ liệu trong dòng (dĩ nhiên là chừa lại cột mã số). Khi cần ghi mới, chỉ cần tìm dòng đầu tiên bị xóa dữ liệu và ghi lại (nếu không tìm được thì ghi một dòng mới nguyên)

    Duy có một điều là rất hiếm người thiết kế CSDL có số thứ tự dùng lại. Lý do: STT dùng để biết dòng nào ghi trước, dòng nào ghi sau, nếu dùng lại thì đặt STT làm chi?

  9. #9
    Ngày gia nhập
    12 2008
    Bài viết
    3

    Mình nghĩ các trường tự động tăng thường là những trường khóa, nên người ta kg cần dùng lại số thứ tự cũ làm gì, nếu bạn muốn dùng lại thì cách tốt nhất là làm thủ công thôi. Trước khi add thêm vào, bạn kiểm tra số thứ tự cuối hiện thời và tăng số thứ tự mún add lên 1 thôi.Good luck!

  10. #10
    Ngày gia nhập
    09 2010
    Bài viết
    4

    Có nhiều cách để tạo cho nó tự động như proc, trigger nhưng đơn giản hơn vẩn là indentity.

Các đề tài tương tự

  1. Lập trình C++0x Nạp chồng toán tử tăng trước ++ và toán tử tăng sau trong lớp Time
    Gửi bởi programmingvietnam trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 03-08-2014, 09:38 AM
  2. Load Image trong file word(đã chuyển thành binary trong csdl) lên trình duyệt
    Gửi bởi Mr.BiBi trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 05-12-2013, 08:45 AM
  3. ADO.NET Từ giá trị bool trong CSDL chuyển thành tên trong DataGridViewTextColumn
    Gửi bởi tamthientai trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 28-12-2011, 10:31 PM
  4. chuyển CSDL SQL2005 sang CSDL SQL2000
    Gửi bởi nthung trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 1
    Bài viết cuối: 08-04-2009, 02:45 PM

Quyền hạn của bạn

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