Mysql 使用自动递增主键插入视图?

Mysql 使用自动递增主键插入视图?,mysql,sql,auto-increment,sql-insert,sql-view,Mysql,Sql,Auto Increment,Sql Insert,Sql View,我有一个表horse和一个视图view\u horse,它从horse表中选择除主键(主键是自动递增整数)之外的每一列,然后将其呈现给用户,我希望将数据插入到该视图的基础表中,并且自然希望自动生成主键。但是,当我尝试向其中插入任何数据时,我不断收到一个SQL异常,说明“视野视图底层没有默认值” 编辑- CREATE TABLE IF NOT EXISTS `TRC`.`horse` ( `horse_id` INT NOT NULL AUTO_INCREMENT, `registered_nam

我有一个表
horse
和一个视图
view\u horse
,它从
horse
表中选择除主键(主键是自动递增整数)之外的每一列,然后将其呈现给用户,我希望将数据插入到该视图的基础表中,并且自然希望自动生成主键。但是,当我尝试向其中插入任何数据时,我不断收到一个SQL异常,说明“视野<代码>视图底层没有默认值”

编辑-

CREATE TABLE IF NOT EXISTS `TRC`.`horse` (
`horse_id` INT NOT NULL AUTO_INCREMENT,
`registered_name` VARCHAR(20) NOT NULL,
`stable_name` VARCHAR(20) NOT NULL,
`horse_birth_year` DATE NOT NULL,
`horse_height` DECIMAL(3,1) NOT NULL,
`horse_location` VARCHAR(50) NOT NULL DEFAULT 'TRC',
`arrival_date` DATE NOT NULL,
`passport_no` MEDIUMTEXT NULL,
`is_deceased` TINYINT(1) NOT NULL,
`arrival_weight` DECIMAL NOT NULL,
`horse_sex` VARCHAR(8) NOT NULL,
`microchip_no` VARCHAR(15) NULL,
`date_of_death` DATE NULL,
PRIMARY KEY (`horse_id`),
INDEX `fk_Horses_SexLookup1_idx` (`horse_sex` ASC),
CONSTRAINT `fk_Horses_SexLookup1`
FOREIGN KEY (`horse_sex`)
REFERENCES `TRC`.`lookup_sex` (`sex`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB

USE `TRC`;
CREATE  OR REPLACE VIEW `TRC`.`view_horse` AS SELECT 
registered_name AS 'Registered Name',
stable_name AS 'Stable Name', 
horse_birth_year AS 'Age', 
horse_height AS 'Height',
arrival_weight AS 'Weight on Arrival',
horse_sex AS 'Sex',
horse_location AS 'Location', 
arrival_date AS 'Date of Arrival',
passport_no AS 'Passport no.',
microchip_no AS 'Microchip no.',
is_deceased AS 'Alive?'
FROM `horse`;

如果我插入视图而不指定列,它实际上完成了ok。但是当我按照视图中的指定给出列时就不会了。

您没有尝试插入到实际视图中,是吗?插入到表中,然后从视图中选择


编辑。算了吧;感谢您的更正。

这里有一个演示如何插入视图的提琴:

您可以发布SQLFIDLE吗?您可以插入视图。那很好-(嗯,有很多警告!);-)@我知道您可以,但为什么要这样做?例如,如果您试图从Oracle DB链接访问表(因此您的客户机就是Oracle DB),则需要一个视图。由于Oracle对所有标识符的限制为30个字符,因此它无法处理长度超过30个字符的列名。这可以通过缩短列名的视图来解决。