MariaDB के मूल्य की जाँच एक विशेषता w/ एक और टेबल की विशेषता

0

सवाल

मैं आश्वस्त करना चाहता हूँ पर डालने के लिए एक प्रबंधक है कि विभाग के प्रबंधक प्रारंभ दिनांक [विभाग.mgr_start_date] आ रहा है के बाद उसकी जन्मतिथि [कर्मचारी.bdate], मैं कैसे कर सकते हैं कि?

CREATE TABLE IF NOT EXISTS IF NOT EXISTS EMPLOYEE
(
    ssn INT(16) unsigned NOT NULL,
    fname VARCHAR(16),
    lname VARCHAR(16),
    bdate DATE,
    address VARCHAR(32),
    gender enum('m','f'),
    salary decimal(16,2),
    Dno VARCHAR(8),
    PRIMARY KEY (ssn)
);

CREATE TABLE IF NOT EXISTS IF NOT EXISTS DEPARTMENT
(
    mgr_ssn INT(16) unsigned,
    Dname VARCHAR(32),
    mgr_start_date DATE,
    Dnumber VARCHAR(8),
    PRIMARY KEY (Dnumber),
    FOREIGN KEY (mgr_ssn) REFERENCES EMPLOYEE(ssn)
);
mariadb mariadb-10.4
2021-11-22 15:09:40
1

सबसे अच्छा जवाब

0

तुम होगा ऐसा करने के लिए एक ट्रिगर के साथ.

जांच की कमी कर सकते हैं केवल संदर्भ तालिका में स्तंभों जहां बाधा परिभाषित किया गया है.

पूर्ण SQL मानक भी शामिल है, एक प्रकार की बाधा कहा जाता है एक दावे की अनुमति देता है जो बहु-टेबल की कमी है, लेकिन MariaDB नहीं करता है, इस सुविधा को लागू SQL (बहुत कुछ ब्रांडों के लिए SQL डेटाबेस करते हैं, इसे लागू).

CREATE TRIGGER t BEFORE INSERT ON DEPARTMENT
FOR EACH ROW BEGIN
  IF NEW.mgr_start_date < (SELECT bdate FROM EMPLOYEE WHERE ssn = NEW.mgr_ssn) THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'manager is way too young';
  END IF;
END

परीक्षण:

insert into EMPLOYEE set ssn=123, bdate='2021-01-01';

insert into DEPARTMENT set mgr_ssn=123, dnumber='1', mgr_start_date='2010-01-01';

ERROR 1644 (45000): manager is way too young
2021-11-22 17:14:03

#1064 - आप एक त्रुटि अपने SQL वाक्यविन्यास में; मैनुअल की जाँच करें मेल खाती है कि करने के लिए अपने MariaDB सर्वर संस्करण के लिए सही सिंटैक्स का उपयोग करने के लिए " के पास लाइन पर 4SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'manager is way too young';
Muhannad Bashar

क्यों मुझे लगता है कि गलती?
Muhannad Bashar

क्या करता है SELECT VERSION(); आप करने के लिए वापस?
Bill Karwin

10.4.21-MariaDB
Muhannad Bashar

हम्म । MariaDB का समर्थन करना चाहिए SIGNAL के बाद से संस्करण 5.5. देखें mariadb.com/kb/en/signal. लेकिन मैं का उपयोग नहीं करते MariaDB, तो मैं यह परीक्षण नहीं कर सकता.
Bill Karwin

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में