Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Identity cho cùng lúc 2 thuộc tính trong SQL Server 2008??

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    31

    Question Identity cho cùng lúc 2 thuộc tính trong SQL Server 2008??

    Em có làm ứng dụng backup file cho nhiều người dùng khác nhau, mỗi file phân biệt với nhau bằng Version. Nếu làm version theo kiểu GetLastestVersion(filename,user) rồi cộng thêm 1 để lấy version mới nhất của file vừa upload lên thì xảy ra tình trạng là nếu file đó có nhiều người sử dụng, thì khi lấy version sẽ xảy ra vấn đề trùng nhau (hiếm nhưng cũng gặp).
    Em mới nghĩ ra cách dùng Identity để nó tự động tăng version. Bất kể file gì, khi được đưa dữ liệu vào table đều tự động tăng như cột Id. Nhưng vấn đề là MS SQL không cho 2 cột cùng 1 lúc tăng lên.
    Vậy có cách nào giải quyết trong trường hợp này?
    Bảng CSDL gồm có:
    -Id
    -FileName (tên file có thể trùng nhau, phân biệt bằng version)
    -Version (là 1 số không trùng nhưng phải đảm bảo filename.version cũ < filename.version mới)

    Em xin cảm ơn các anh chị trước
    //------------------
    Em không rõ vì sao bài của em bị xóa. Tiêu đề ghi là Lỗi Identity cho 2 cột: Identity dùng để định danh, thường cho cột ID trong Table, giúp phân biệt các row trong cùng 1 bảng. Identity cho 2 cột tức là dùng identity cho cả 2 thuộc tính trong table. Em đã ghi rõ ràng trong thân bài viết và vì đây là lỗi khi tạo bảng cơ sở dữ liệu, nên 2 cột đó chính là 2 thuộc tính trong bảng, làm sao có tên được.
    Bên SQL server, lỗi nhiều lúc không được hiển thị như bên C# (không có exception). Em nghĩ chủ mod nên đọc kỹ bài viết trước khi xóa.
    Số phận nghiệt ngã có thể khiến bạn bỏ cuộc, mọi người có thể nói với bạn là không thể- nhưng chính bạn mới là người quyết định có bỏ cuộc hay không- cho dù bất kì điều gì xảy ra.

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

    cộng thêm 1 để lấy version mới nhất của file vừa upload lên thì xảy ra tình trạng là nếu file đó có nhiều người sử dụng, thì khi lấy version sẽ xảy ra vấn đề trùng nhau (hiếm nhưng cũng gặp).

    Đặt Filename + Version là một khóa để bảo đảm không bị trùng lặp
    Nếu dùng stored procedure thì lock record lại, và bỏ code vào một transaction. Chạy xong thì nhả record ra.
    Nếu dùng code C# hoặc VB.Net thì bẫy lỗi lại, và tăng Version lên 1


    Em mới nghĩ ra cách dùng Identity để nó tự động tăng version. Bất kể file gì, khi được đưa dữ liệu vào table đều tự động tăng như cột Id.

    Đầu óc lúc nào cũng nghĩ đến từ identity cho nên bị bế tắc
    Trả lời cho 2 identities:
    Identity là ký hiệu do CSDL phát ra dùng để giản dị hóa việc phân biệt dòng trong bảng. Mỗi người chỉ có một số CMND thôi. Bạn đòi người ta cấp cho số thứ hai sao được.

  3. #3
    Ngày gia nhập
    02 2011
    Nơi ở
    Tp.HCM
    Bài viết
    124

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

    Bạn cộng luôn cái ID vào version đó , vẫn chỉ có ID tăng thôi nhưng version cũng tăng luôn
    Anh yêu em hí hí

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

  1. ADO.NET Giải pháp nào để cập nhật dữ liệu server cùng lúc từ nhiều client?
    Gửi bởi thienduong584 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 04-04-2012, 10:45 AM
  2. MS SQL với C# Cách coppy dữ liệu giữa 2 bảng trong cùng 1 database ở SQL server 2008?
    Gửi bởi Xchienfantasy trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 17-05-2011, 09:05 AM
  3. Làm sao tìm nhân viên có cùng ngày sinh trong SQL Server 2008
    Gửi bởi baothanh07 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 5
    Bài viết cuối: 03-04-2010, 04:02 PM
  4. Unit Test 1000 người truy cập Server cùng 1 lúc
    Gửi bởi xinbat007 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 20-03-2010, 06:02 PM
  5. Ngẽn server khi có nhiều connection connect đến cùng lúc
    Gửi bởi GlowWorm trong diễn đàn Thắc mắc MySQL và SQLite
    Trả lời: 1
    Bài viết cuối: 19-01-2010, 08:54 PM

Tags của đề tài này

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