stathis:
Το πρόβλημα είναι ότι αυτό δουλεύει μόνο εάν γίνει εισαγωγή μίας εγγραφής (το @@rowcount του πίνακα inserted=1)
Δεν υπάρχει κάποιο πρόβλημα. Άνετα μπορείς να γράψεις 2-3 διαφορετικά inserts μέσα στο trigger τα οποία θα ελέγχουν τον τύπο του παραστατικού, π.χ. insert into B select ... from inserted where inserted.Type=1; insert into B select ... from inserted where inserted.Type=2 .
Ή μπορείς να κάνεις κάπως πιο περίπλοκο το insert για να δουλέψει με τη μία, π.χ.
insert into B (InvoiceID,InvoiceNumber)
select InvoiceID, (SELECT MAX(InvoiceNumber)+1 From B where B.InvoiceType=inserted.InvoiceType)
from inserted
Δεν προλαβαίνω να δοκιμάσω το παραπάνω για να βεβαιωθώ ότι η σύνταξη είναι σωστή, αλλά η ιδέα είναι ότι για κάθε εγγραφή στον inserted επιλέγω το μέγιστο αριθμό παραστατικού +1 από τον B και τον βάζω μέσα.
Γενικά, δεν υπάρχει κανένας λόγος να δουλέψεις με cursors, απλά set operations αρκούν για το 99.999% των περιπτώσεων
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos