gpt4 book ai didi

MySql 基本表创建/处理

转载 作者:行者123 更新时间:2023-11-29 00:24:27 26 4
gpt4 key购买 nike

我正在尝试创建一个简单的表,在其中插入字段并在 MySql 中进行一些检查。我使用 Microsoft SQL 相对容易。相反,MySql 给出了 evrrytime 查询错误,甚至没有指定发生了什么。除了糟糕的 MySql 软件设计,这是我正在尝试做的事情:

1 个表有 4 个字段,带有一个自动递增的自动生成的数字,用于将 ID 设置为主键

 CREATE TABLE `my_db`.`Patients_table` (
`ID_Patient` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Patient_name` VARCHAR( 200 ) NOT NULL ,
`Recovery_Date` DATETIME NOT NULL ,
`Recovery_count` INT NOT NULL
) ENGINE = MYISAM

一个简单的存储过程,用于插入此类字段并在插入之前检查是否存在某些内容:

CREATE PROCEDURE nameInsert(IN nome, IN data)
INSERT INTO Patients_table (Patient_name,Recovery_Date) values (nome,data)

IF (EXISTS (SELECT Recovery_count FROM Tabella_nomi) = 0) THEN
INSERT INTO (Patients_table (Recovery_count)
ELSE
SET Recovery_count = select Recovery_count+1 from Patients_table
END

这在很多层面上似乎都是错误的,MySQL 无用的语法检查器也无济于事。

我该怎么做?谢谢。

最佳答案

这段代码似乎有很多错误。 (无意冒犯!)


首先,程序需要用BEGINEND包裹:

CREATE PROCEDURE nameInsert(IN nome, IN data)
BEGIN
...[actually do stuff here]
END

其次,因为您的表的所有字段都声明为NOT NULL,所以您必须插入所有带有INSERT<的字段 语句(这包括 Recovery_Date 列,但不包括 AUTO_INCREMENT 列)。如果您希望它自动设置,您可以将 DEFAULT CURRENT_TIMESTAMP 添加到日期列。

INSERT INTO Patients_table (Patient_name,Recovery_Date) values (nome,data)

第三,您的IF 谓词到底在做什么?

EXISTS (SELECT Recovery_count FROM Tabella_nomi) = 0

如果你想检查一行是否存在,不要把 = 0 放在末尾。此外,Tabella_nomi 未在该过程中的任何位置声明。 此外,您的SELECT 语句应该有一个WHERE 子句,因为我假设您想要选择一个特定的行(这将选择所有 recovery_counts 的结果集)。


第四,第二个INSERT语句好像有点乱。它应该看起来更像第一个 INSERT,并牢记我在上面提出的观点。

INSERT INTO (Patients_table (Recovery_count)

第五ELSE语句

SET Recovery_count = select Recovery_count+1 from Patients_table

也有一些问题。 SET 用于设置变量,而不是行中的值。我不是 100% 确定你的意图是从这个声明中得出的,但看起来你打算增加某一行的 Recovery_count 列(如果它已经存在)。在这种情况下,你打算做这样的事情:

UPDATE Patients_table SET Recovery_count = Recovery_count+1 WHERE <conditional predicate>

条件谓词是这样的:

Patients_name = nome

尝试这些操作,并查看当您尝试执行 CREATE STATEMENT 时出现的错误。我敢打赌它们比您想象的更有用!

关于MySql 基本表创建/处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19602453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com