Я использую скрипт MYSQL, и я хочу вставить некоторые значения в таблицу.
INSERT INTO 'testType' ('name') VALUES ('URL');
INSERT INTO 'testType' ('name') VALUES ('xD');
INSERT INTO 'testType' ('name') VALUES ('LOL');
Но я хочу только вставить, если стол пуст в первую очередь.
Я не парень SQL, но в основном
if(testType.length() == 0 {
INSERT INTO 'testType' ('name') VALUES ('URL');
INSERT INTO 'testType' ('name') VALUES ('xD');
INSERT INTO 'testType' ('name') VALUES ('LOL');
}
Как я могу сделать это самым простым и минимальным способом? Спасибо.
EDIT: мой вопрос другой. Я хочу вставить ВСЕ ДАННЫЕ, если таблица пуста. не только одна вставка в то время
Во-первых, я бы предложил сделать это за один шаг:
INSERT INTO testType(name)
VALUES ('URL'), ('xD'), ('LOL');
Затем вы можете выразить это без IF
:
INSERT INTO testType(name)
SELECT t.name
FROM (SELECT 'URL' as name UNION ALL
SELECT 'xD' as name UNION ALL
SELECT 'LOL' as name
) t
WHERE NOT EXISTS (SELECT 1 FROM testType);
Наконец, если вы хотите вставить эти значения, если они не существуют, вы можете позволить базе данных выполнить эту работу. Сначала определите уникальное ограничение/индекс для name
(если имя еще не является первичным ключом), а затем используйте ON DUPLICATE KEY UPDATE
:
CREATE UNIQUE INDEX unq_testtable_name ON testtable(name);
INSERT INTO testType(name)
VALUES ('URL'), ('xD'), ('LOL')
ON DUPLICATE KEY UPDATE name = VALUES(name);
Вы можете использовать хранимую процедуру
DELIMITER //
CREATE PROCEDURE 'proc1' ()
BEGIN
SELECT COUNT(*) INTO variable1 FROM testType;
IF variable1 = 0 THEN
INSERT INTO 'testType' ('name') VALUES ('URL');
INSERT INTO 'testType' ('name') VALUES ('xD');
INSERT INTO 'testType' ('name') VALUES ('LOL');
END WHILE;
END //
Попробуй это:
DECLARE @ExistCount INT;
SET @ExistCount = (SELECT COUNT(1) FROM 'testType');
IF @ExistCount<1
THEN
INSERT INTO 'testType' ('name') VALUES ('URL'),('xD'),('LOL');
END IF;