मैं एक टेबल पर एक अद्यतन के लिए ट्रिगर के बजाय एक बनाने की कोशिश करता हूं। इसके बजाए ट्रिगर के सामान्य उपयोग विचार हैं लेकिन स्क्लाइट मैनुअल का कहना है कि इसके बजाए ट्रिगर के लिए टेबल के लिए भी मान्य हैं। लेकिन मुझे त्रुटि मिलती है: तालिका पर ट्रिगर के इंस्टाल को नहीं बना सकता है। और मैं सोच रहा हूं क्यों।क्यों SQLite त्रुटि: तालिका पर ट्रिगर की स्थापना नहीं कर सकता?
मैं विदेशी कुंजी का उपयोग:
PRAGMA foreign_keys = ON;
और मैं दो तालिकाओं की है। एक पहचानकर्ता तालिका:
CREATE TABLE id
(
id INTEGER PRIMARY KEY AUTOINCREMENT,
created REAL NOT NULL DEFAULT CURRENT_TIMESTAMP
);
और एक मेज पहचानकर्ता का संदर्भ जो:
CREATE TABLE person
(
id INTEGER NOT NULL DEFAULT (last_insert_rowid()) REFERENCES id,
login TEXT,
password TEXT,
firstname TEXT,
lastname TEXT,
email TEXT,
created REAL NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id, created)
);
सम्मिलित ठीक काम करता है:
INSERT INTO id DEFAULT VALUES;
INSERT INTO person (login) VALUES ('root');
SELECT * FROM person;
1|root|||||2012-02-28 18:03:45
अब मैं निम्नलिखित ट्रिगर है, जो एक अद्यतन धर्मान्तरित परिभाषित करना चाहते हैं एक डालने में:
CREATE TRIGGER person_update INSTEAD OF UPDATE OF login, password, firstname, lastname, email ON person
BEGIN
INSERT INTO person (login, password, firstname, lastname, email)
VALUES (new.login, new.password, new.firstname, new.lastname, new.email);
END;
लेकिन यह उपरोक्त त्रुटि के साथ विफल रहता है और मुझे समझ में नहीं आता क्यों।
कोई यह गलत नहीं है। सिंटैक्स तालिका-नाम पर कॉलम-नाम के अद्यतन की स्थापना है। यहां देखें: http://sqlite.org/lang_createtrigger.html – ceving