Aşağıdaki MySQL komut dosyasına sahibim ve çalışmıyor. IF (INSERT INTO'dan sonra) ikinci sorguyu (SELECT) sildiğimde, çalışmaya başladı. Sorum şu: Hazırlanmış bir Deyimde birden fazla sorguyu yürütebilirim, ancak bir Prosedür kullanmamayı başarabilir miyim (son bölüm bunun için yeni bir soru açmamın sebebidir)? peşinMySQL Hazır Bildirimi'nde birden çok sorgu (Prosedür olmadan)
Teşekkür ...
SQL:
SET @data1 = 'DATA_HERE' COLLATE utf8_general_ci
;
/* Random key */
SET @randomKey = CONCAT('rnd', DATE_FORMAT(NOW(), '%Y%m%d') , FLOOR(RAND() * 100)) COLLATE utf8_general_ci
;
/* If not exists do an INSERT else SELECT a warning message */
SET @stmt = IF(
(SELECT EXISTS (
SELECT
t0.id
FROM
table t0
WHERE 1
AND t0.key = @randomKey COLLATE utf8_general_ci
AND t0.data = @data1 COLLATE utf8_general_ci
)
) = 0
, CONCAT("
INSERT INTO
table
SET
key = @randomKey COLLATE utf8_general_ci
, data = @data1 COLLATE utf8_general_ci;
SELECT
t0.*
FROM
table t0
WHERE 1
AND t0.id = LAST_INSERT_ID(); "
)
, CONCAT("SELECT CONCAT('This random key already exists with this data!');")
)
;
PREPARE stmt FROM @stmt
;
EXECUTE stmt
;
Aldığınız hata nedir? –
"Sorgu: HESAP stmt FROM @stmt Hata kodu: 1064 SQL sözdiziminde bir hata var, 'SELECT t0. * FROM table t0 WHERE yakınında kullanmak için doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen elkitabına bakın. 1 VE t0.id = '15 satırında' Bir sabitleme kimliğini kullandığımda ('LAST_INSERT_ID()' olmadan) sorun aynıdır. –