Home > front end >  Error 1242 subquery returns more than 1 row on simple insert into mysql
Error 1242 subquery returns more than 1 row on simple insert into mysql

Time:12-01

i have table called barang and when i want to insert into the table with this code

INSERT INTO barang(kode,deposit,brand)
VALUES('13212321','1232131','12312321');

it turns error #1242 - Subquery returns more than 1 row i already search into SO but didnt found out with just case as mine, which part i skip on this?

UPDATE

as mr @P.salmon said here's my trigger on before insert, sir

BEGIN
SET NEW.tanggal = NOW();
SET NEW.kategori_nama = (SELECT kategori.nama from kategori JOIN barang WHERE 
                         kategori.kode = barang.kategori);
SET NEW.hargadepresiasi = NEW.hargabeli * 2 / 8;
END

column for kategori and barang table :

     --------------------- 
    | kategori            |
     --------------------- 
    |                kode |
    |                nama |
    |                no   |                     
     --------------------- 

for barang table

     --------------- 
    | barang        |
     --------------- 
    | kode          |
    | nama          |
    | kategori      |
    | kategori_nama |
     --------------- 

so basically, on kategori_nama column in barang table is still null and i want to fill it with nama on kategori table with kategori.kode = barang.kategori

CodePudding user response:

run this by hand for the value in your update that gives the error

SELECT kategori.nama from kategori JOIN barang WHERE 
                         kategori.kode = barang.kategori

then you should see the multiple records - then you can decide which of those records your really intend and rewrite this part of the trigger

these might be what you need:

SELECT distinct kategori.nama from kategori JOIN barang WHERE 
                         kategori.kode = barang.kategori

or

SELECT min( kategori.nama ) from kategori JOIN barang WHERE 
                         kategori.kode = barang.kategori
  • Related