Triggers στον Sql Server 2005

Συζητήσεις για τις γλώσσες του dot Net και για του Visual Studio της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
johnnys14
Δημοσιεύσεις: 70
Εγγραφή: 27 Ιουν 2008 00:41
Επικοινωνία:

Triggers στον Sql Server 2005

Δημοσίευση από johnnys14 » 22 Αύγ 2008 15:45

Καλησπέρα σε όλους!

Έχω δημιουργίσει δυο πίνακες στον sql server 2005 με τα εξής πεδία:

Πίνακας BOOKS
BOOK_ID INT
TITLOS VARCHAR(50)
ANTITYPA INT

ΚΑΙ ΤΟΝ

Πίνακα APOTHIKH
BOOK_ID INT
POSOTITA INT


Όταν λοιπόν γίνεται καταχώρηση στον πίνακα βιβλία (BOOKS) ενός βιβλίου θα ήθελα να καταχωρούνται αυτόματα οι τιμές και στον πίνακα APOTHIKH και συγκεκριμένα στα πεδιά BOOK_ID και POSOTITA έτσι δημιούργισα το παρακάτω trigger για τα το καταχωρεί αυτόματα.


CREATE TRIGGER AFTER_BOOKS
ON BOOKS
AFTER INSERT
AS
UPDATE APOTHIKH
SET POSOTITA = ANTITYPA
BOOK_ID=BOOK_ID
FROM BOOKS

Αλλά δεν λειτουργεί, προφανός κάτι δεν κάνω σωστά.
Ελπίζω κάποιος να μπορεί να με βοηθήσει!

Thanks

Άβαταρ μέλους
dt008
Δημοσιεύσεις: 90
Εγγραφή: 29 Ιουν 2003 01:54
Τοποθεσία: Αθήνα
Επικοινωνία:

Triggers στον Sql Server 2005

Δημοσίευση από dt008 » 22 Αύγ 2008 23:57

μα.. άμα βάλεις ένα καινούριο βιβλίο, αυτό δεν θα υπάρχει στην αποθήκη, έτσι δεν είναι;
Άρα θες insert, όχι update... οπότε ο trigger σου θα πρέπει να είναι


CREATE TRIGGER AFTER_BOOKS
ON BOOKS
AFTER INSERT
AS
BEGIN
INSERT INTO APOTHIKH VALUES(inserted.BOOK_ID, inserted.ANTITYPA )
END

johnnys14
Δημοσιεύσεις: 70
Εγγραφή: 27 Ιουν 2008 00:41
Επικοινωνία:

Triggers στον Sql Server 2005

Δημοσίευση από johnnys14 » 23 Αύγ 2008 17:53

Σ’ ευχαριστώ πολύ, αλλά δυστυχώς και πάλι δεν λειτούργησε (εμφανίζει πρόβλημα στο inserted.BOOK_ID και στο inserted.ANTITYPA ), πως δεν είναι αποδεκτός τύπος δεδομένων και κάτι τέτοια.
Μήπως έχει να κάνει με το ότι χρησιμοποιώ τον sql server 2005

Άβαταρ μέλους
dt008
Δημοσιεύσεις: 90
Εγγραφή: 29 Ιουν 2003 01:54
Τοποθεσία: Αθήνα
Επικοινωνία:

Triggers στον Sql Server 2005

Δημοσίευση από dt008 » 23 Αύγ 2008 17:59

sorry, το έγραψα από μνήμης...
ο πίνακας inserted μπορεί να έχει μία ή πολλές εγγραφές, ανάλογα με το αν έχει γίνει ένα insert ή batch

το σωστό είναι

CREATE TRIGGER AFTER_BOOKS
ON BOOKS
AFTER INSERT
AS
BEGIN
INSERT INTO APOTHIKH select inserted.BOOK_ID, inserted.ANTITYPA from inserted
END

johnnys14
Δημοσιεύσεις: 70
Εγγραφή: 27 Ιουν 2008 00:41
Επικοινωνία:

Triggers στον Sql Server 2005

Δημοσίευση από johnnys14 » 26 Αύγ 2008 15:04

Σ' ευχαριστώ πολύ φίλε μου τελικά δούλεψε μια χαρά!

Thanks και πάλι!

Άβαταρ μέλους
dt008
Δημοσιεύσεις: 90
Εγγραφή: 29 Ιουν 2003 01:54
Τοποθεσία: Αθήνα
Επικοινωνία:

Triggers στον Sql Server 2005

Δημοσίευση από dt008 » 26 Αύγ 2008 15:12

μια χαρά! για ό,τι άλλο θες εδώ είμαστε!

Απάντηση

Επιστροφή στο “dot Net και Visual Studio”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες