2016-12-02 101 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 * ...)

相关问题