Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 16
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    [IMG]images/smilies/thinking.gif[/IMG] Khi có ID tự tăng dạng: abc123... thì bạn lấy cái ID cuối cùng bằng cách cắt chuỗi, sau đó sắp xếp giảm dần theo cái số đuôi là ok thui.

  3. #3
    Ngày tham gia
    Sep 2015
    Đang ở
    Hà Nội
    Bài viết
    0
    Trích dẫn Gửi bởi mrfour.it
    [IMG]images/smilies/thinking.gif[/IMG] Khi có ID tự tăng dạng: abc123... thì bạn lấy cái ID cuối cùng bằng cách cắt chuỗi, sau đó sắp xếp giảm dần theo cái số đuôi là ok thui.
    bác hiểu nhầm ý em rồi.bảng Order ID tự tăng

    rồi mình lấy luôn id đó insert vào bảng DetailOrder

    mà cái đó phải thực hiện tren SQL querry

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi mrfour.it
    [IMG]images/smilies/2.gif[/IMG] Tưởng ID tự tăng do bạn tạo, hóa ra bạn sử dụng cái có sẵn à. Mình ko nhầm cái có sẵn chỉ được kiểu int thui. Nhưng để số như vậy nhìn chuối kinh nên dùng kiểu đó chỉ để liên kết, hiểu ngầm, chứ ko hiển thị cho người dùng thấy. Mà nếu tự tăng kiểu đó thì cũng càng dễ chứ sao. ID tự tăng thì thằng mới chèn vào có giá trị lớn nhất=> bạn select top 1 order by DESC ID. Sau đó gọi thủ tục insert vào chi tiết. Vậy là ok chứ bạn?
    Mình đọc hoài bài của chủ Top và của bạn mà không hiểu là vì sao phải select ngược lại mà không dùng @@IDENTITY hoặc Var Output????

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi elkidvnn1
    Mình đọc hoài bài của chủ Top và của bạn mà không hiểu là vì sao phải select ngược lại mà không dùng @@IDENTITY hoặc Var Output????
    [IMG]images/smilies/biggrin.png[/IMG] Như thế này thì có gì vướng bạn. Mình dùng thế này thui, chắc ko fai cach tối ưu, nhưng xài dc.
    Mã:
    --insert bảng tbl_Order--
     insert into Order...
    --Lấy ID vừa mới có--
    declare @ID int
    select top 1 @ID=ID from tbl_Order 
    order by ID DESC
    --Insert bảng chi tiết
    insert into DetailOrder(@ID....)

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cộng thêm cái string này vào sau câu SQL INSERT
    "; SELECT CAST(scope_identity() AS int)" -- lưu ý dấu ";" để kết thúc câu insert trước đó

    Trong lệnh command, thay vì ExecuteNonquery() thì dùng ExcuteScalar()

    Ép kiểu trả về của hàm này thành int. Trị trả về chính là ID của bản ghi mới vừa insert

  7. #7
    viết 2 câu vô trong cùng 1 store thử xem

    Begin
    Insert Into Orders Values ('aaa','2012-09-02','bbbb'....)
    Insert Into OrderDetails Values (@@IDENTITY,'jjjj',99999,999999......)
    End

  8. #8
    Trích dẫn Gửi bởi mkmk123
    bác hiểu nhầm ý em rồi.bảng Order ID tự tăng

    rồi mình lấy luôn id đó insert vào bảng DetailOrder

    mà cái đó phải thực hiện tren SQL querry
    [IMG]images/smilies/2.gif[/IMG] Tưởng ID tự tăng do bạn tạo, hóa ra bạn sử dụng cái có sẵn à. Mình ko nhầm cái có sẵn chỉ được kiểu int thui. Nhưng để số như vậy nhìn chuối kinh nên dùng kiểu đó chỉ để liên kết, hiểu ngầm, chứ ko hiển thị cho người dùng thấy. Mà nếu tự tăng kiểu đó thì cũng càng dễ chứ sao. ID tự tăng thì thằng mới chèn vào có giá trị lớn nhất=> bạn select top 1 order by DESC ID. Sau đó gọi thủ tục insert vào chi tiết. Vậy là ok chứ bạn?

  9. #9
    Ngày tham gia
    Feb 2014
    Bài viết
    0
    Phương pháp tìm ID bằng cách truy cứu max ID tương đối khá nguy hiểm vì cái ID ấy chưa chắc đã từ lệnh insert của mình. Trường hợp hai ba người cùng insert một lúc?

    Hàm Scope_identity() bảo đảm trả về ID do mình insert vào, vì cùng nằm chung một scope.

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi VoTichSu
    Phương pháp tìm ID bằng cách truy cứu max ID tương đối khá nguy hiểm vì cái ID ấy chưa chắc đã từ lệnh insert của mình. Trường hợp hai ba người cùng insert một lúc?

    Hàm Scope_identity() bảo đảm trả về ID do mình insert vào, vì cùng nằm chung một scope.
    [IMG]images/smilies/waiting.gif[/IMG] Viết liền nhau mà bác. Với lại nếu ID tự tăng do mình tự tạo theo mẫu riêng thì có thể dùng cách nào ngoài kiểu đó? @@Identity đâu phát huy được công dụng trong trường hợp đó. Mình toàn dùng ID theo mẫu dạng Tiền tố+Đuôi... nên hay dùng cách lấy Max, thấy chạy vẫn OK. hihi

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • 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
  •