2016-12-02 100 views
1

我使用的MySQL版本5.7,這是該表給我的問題1列(S):MySQL錯誤1241:操作數應包含在INSERT語句(不選擇)

CREATE TABLE Tenencia(
    fechaInicio DATE, 
    numero INT, 
    nif CHAR(10), 
    fechaFinal DATE, 
    PRIMARY KEY (fechaInicio,numero,nif), 
    FOREIGN KEY (numero) REFERENCES Animal (numero) 
    ON UPDATE CASCADE, 
    FOREIGN KEY (nif) REFERENCES Propietario (nif) 
    ON UPDATE CASCADE 
); 

我想做簡單的數據插入到這個表中,像這樣:

INSERT INTO Tenencia (fechaInicio,numero,nif,fechaFinal) 
VALUES ('2012-06-10', 2, '1B', '2012-09-11'); 

但它返回這個錯誤:

ERROR 1241 (21000): Operand should contain 1 column(s) 

我已經看到了這個問題一個在插入時使用SELECTs時,或者試圖一次插入多行,但是我逐一插入它們(這是一個類分配並逐個插入它們是其中一個要求)。

Here's a link to the complete script,如果這是必要的。 在表格定義中也有一個觸發器。

請幫忙!

+1

這不能是導致上述問題的查詢 – Rahul

+0

請發佈產生此錯誤的可重現樣本。 –

+0

@Rahul我寫的上面的INSERT字面上是我在命令行寫的唯一的東西!表格已經被創建,並且我已經成功地將數據插入到引用的表Animal和Propietario中。 – Esther28

回答

1

的問題是在你的觸發腳本:

CREATE TRIGGER ttenenciaUnica 
    BEFORE INSERT ON Tenencia 
FOR EACH ROW BEGIN 
    DECLARE msg VARCHAR(255); 
    IF (NEW.fechaFinal IS NULL) AND (SELECT * FROM Tenencia T 
        WHERE T.numero = NEW.numero AND T.fechaFinal IS NULL) THEN 
    set msg = "Animal ya inscrito en una Tenencia activa."; 
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg; 
    END IF; 

,如果你刪除它,你將能夠插入,錯誤的命令是:

SELECT * FROM Tenencia T WHERE T.numero = NEW.numero AND T.fechaFinal IS NULL 
0

而不是(SELECT * ...)嘗試EXISTS (SELECT * ...)

相關問題